monarch_dodra wrote:
void main()
{
    uint[5] arr1;
    arr1[].fill(rndGen);
    uint[5] arr2;
    arr2[].fill(rndGen);
    writeln("arr1: ", arr1[]);
    writeln("arr1: ", arr2[]);
}
//----
arr1: [3622200385, 2579361262, 3208046123, 1753759120, 133131992] arr2: [3622200385, 2579361262, 3208046123, 1753759120, 133131992]
//----
Oops!

Oops indeed!

It should be noted that a common need is to have reproducible RNG routines. For example, I was angry at Python breaking the reproducibility of everything except the vanilla random.random() around version 3.2. Still, as the language is going to have random2 anyway, and reproducibility will already suffer much from RNG becoming a reference type, it will be a good time for some cleanup.

On a side note, as D also uses MT19937 as the main RNG, random2 designers may want to address the same accuracy issue which Python did. More on that topic here: http://bugs.python.org/issue9025

Reply via email to