Boost logo

Boost Users :

Subject: Re: [Boost-users] Boost.Random Generator ignores seed
From: Alex Hagen-Zanker (ahh34_at_[hidden])
Date: 2010-11-13 18:32:04


> I'm using mt19937 random number generator, belonging to Boost.Random
>library, and it looks to ignore my call to seed.
> I show relevant code.
>
> static mt19937 gen;
> static MiniUni cien(1, 100);
> static variate_generator d100(gen, cien);
>
> int main() {
> {
> struct timeval time;
> gettimeofday(
> gen.seed(time.tv_usec);
> }
>
> And it generates the same sequence over and over. I've double-checked
>that time.tv_usec really changes.

Could it be that variate_generator d100(gen, cien) defaults to
variate_generator<mt19937, MiniUni> d100(gen,cien) whereas you really need
variate_generator<mt19937&, MiniUni> d100(gen,cien)?

The constructor of the variate_generator now makes a copy of gen and
changing the seed of gen afterwards does not affect the variate_generator.

Solution: explicitly use variate_generator<mt19937&, MiniUni>(gen,cien).

Kind regards, Alex


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net