RandomSample with specified random number generator

Joseph Rushton Wakeling joseph.wakeling at webdrake.net
Tue Jun 12 06:40:38 PDT 2012


On 12/06/12 14:28, Jens Mueller wrote:
>> ... and you'll get out each time the same values.  (Or instead of a
>> newly-defined generator you could just use rndGen as in my code
>> examples.)
>
> Of course. But this behavior is clear from the documentation. Did it
> surprise you? Passing a rng by value is fine I think.

_Is_ it clear?  I would expect that if I create and use 3 samples as in my 
example code, then I would get 3 _different_ samples.  But perhaps I'm too used 
to a C-style past where a single RNG is passed around to different functions 
within the thread.

Bear in mind that the behaviour is different depending on whether you pass an 
RNG or not.  i.e. if you do

     sample = randomSample(iota(0, 100), 5);
     writeln(sample);
     writeln(sample);
     writeln(sample);

... you'll get 3 _different_ sets of values, whereas if you do

     sample = randomSample(iota(0, 100), 5, Random(unpredictableSeed));
     writeln(sample);
     writeln(sample);
     writeln(sample);

... you'll get out 3 times the same sample.

This could be resolved by making it so that if RandomSample is not passed a 
specified RNG, it sets the internally-stored RNG to be Random(unpredictableSeed).


More information about the Digitalmars-d mailing list