std.random and mersenne twister
Joseph Rushton Wakeling
joseph.wakeling at webdrake.net
Fri Jul 20 05:20:16 PDT 2012
On 20/07/12 11:47, Andrea Fontana wrote:
> I think it would be a good idea to replace it with
> complementary-multiply-with-carry (cmwc). CMWC is faster (use simpler math), has
> a longer period (standard implementation has a 2^131104 period vs 2^19937 of
> current MT implementation in phobos) and passed diehard tests (mt passes them too)
That reminds me ... it might be an idea to implement the Diehard tests for D, as
part of a test suite for std.random.
Rigorously testing pseudorandom functionality is not really my area of
expertise, but it's something that is important to do for any code that might
have a scientific application (quite early on in my experience of writing
simulations, I had the lovely experience of having to rewrite and rerun a whole
load of code because of poor RNG choice; fortunately it didn't affect anything
that had been published). Some years ago, there was an observed departure from
randomness in the default MATLAB RNG which must have resulted in all kinds of
false conclusions and results being out there in the scientific literature.
On the subject of default RNG -- the use of Mersenne Twister is very widespread
as a default method (used in MATLAB/Octave, R, and it's the recommended method
in GSL and Boost). So it may be a good default choice for D just by virtue of
easy comparison with other tools.
More information about the Digitalmars-d
mailing list