Predictable seed for pseudo-random number generation

Joseph Rushton Wakeling joseph.wakeling at webdrake.net
Fri Jul 20 10:52:17 PDT 2012


Hello all,

Often when writing simulations with pseudo-random number generation you want to 
be able to use a predictable seed for testing purposes, e.g. to confirm whether 
an alteration to the code produces changes in output.

In a single-threaded piece of code this is easy -- one can just put

     rndGen.seed(/* my chosen seed here*/);

... in the main() function.  But what about multithreaded code?  rndGen is (by 
definition) thread-global, and so will be separately seeded in each thread. 
Again, it's surely possible to put in place something like the above in the 
controller function for each thread; perhaps

     rndGen.seed(baseSeed + threadID);

... but it would be nice if there was a simpler way of ensuring that all default 
RNG seeds will be predictable, without damaging the independence of the random 
number sequences in different threads.

On a related note, is it possible to override the default random number 
generator with another type?

Thanks and best wishes,

      -- Joe


More information about the Digitalmars-d-learn mailing list