Trying to understand RandomSample struct in std.random

Ali Çehreli acehreli at yahoo.com
Thu Apr 12 14:10:23 PDT 2012


On 04/12/2012 01:27 PM, Joseph Rushton Wakeling wrote:

 > What I _still_ don't understand is the statement in the constructor:
 >
 > // we should skip some elements initially so we don't always
 > // start with the first
 >
 > ... as it seems to me that doing so would bugger up the selection
 > algorithm. The whole point of Algorithm S is that it considers one by
 > one each of the possible values in sequence.

It is to keep front() trivial. Unless popFront() is called, front() 
should always return the same element. That's why the constructor goes 
to the first selection up front so that the first call to front() need 
not calculate anything.

As a result it reduces the laziness of the whole thing though. Even if 
popFront() is never called, the original range is consumed.

Ali



More information about the Digitalmars-d-learn mailing list