Dconf 2015 talks...

Joseph Rushton Wakeling via Digitalmars-d digitalmars-d at puremagic.com
Tue Jan 26 11:34:19 PST 2016


On Tuesday, 26 January 2016 at 12:07:59 UTC, Andrei Alexandrescu 
wrote:
> I think a pseudo-rng as a forward range is useful. It's good in 
> testing and experimentation to fork a sequence of pseudo-random 
> numbers, turn the clock back, etc. Essentially I see no harm in 
> it; it's always easy to make a forward range into an input 
> range, it's the opposite that's hard. -- Andrei

Yes, but there are other ways to fork that sequence that don't 
involve implementing the .save primitive.  That's why in my talk 
(and here) I distinguish between the .save primitive versus some 
other possible primitive -- say, .dup -- whose promise is, "You 
can use me to duplicate the state of this range, but you must use 
me carefully and in an appropriate context."

This is important, because if you just define pseudo-RNGs as 
forward ranges, most people won't read the small print about when 
you need to wrap it in an input range (which is pretty much any 
time you want to pass it into phobos code and have it behave like 
an actual source of randomness).  As a result, they'll get 
unintended and possibly unnoticed statistical correlations -- 
annoying for something like a computer game, possibly a serious 
consequence if occurring in something like a research simulation.


More information about the Digitalmars-d mailing list