On Saturday, 31 May 2014 at 21:22:48 UTC, Joseph Rushton Wakeling
via Digitalmars-d-learn wrote:
On 31/05/14 22:37, Joseph Rushton Wakeling via
Digitalmars-d-learn wrote:
On 30/05/14 22:45, monarch_dodra via Digitalmars-d-learn wrote:
Didn't you make changes to how and when the global PRNG is
popped and accessed
in randomShuffle? I figured it *could* be an explanation.
I think it's more likely that the culprit is either your set
of patches to the
Mersenne Twister, or the patches made to uniform() (which is
called by
partialShuffle). I'll look more deeply into this.
It's due to the the updated uniform() provided in this pull
request:
https://github.com/D-Programming-Language/phobos/commit/fc48d56284f19bf171780554b63b4ae83808b894
I second the thought that reproducibility across different
versions is an important feature of any random generation
library. Sadly, I didn't use a language yet which supported such
a flavor of reproducibility for a significant period of time in
its default random library, so I have to use my own randomness
routines when it matters. I've reported my concern [1] at the
moment of breakage, but apparently it didn't convince people.
Perhaps I should make a more significant effort next time (like a
pull request) for the things that matter to me. Well, now I know
it does matter for others, at least.
In short, if uniform() has to be tweaked, the sooner it happens,
the better.
Alternatively, the library design could allow different uniform()
implementations to be plugged in, and provide legacy
implementations along with the current (default) one. In that
case, all one has to do to reproduce the old behavior is to plug
the appropriate one in.
[1]
http://forum.dlang.org/thread/vgmdoyyqhcqurpmob...@forum.dlang.org#post-gjuprkxzmcbdixtbucea:40forum.dlang.org