On Monday, 1 May 2017 at 11:08:56 UTC, Ola Fosheim Grøstad wrote:
E.g. find a set of cyclic random generators and break down N
into a sum of these cycle-sizes, then just keep track of the
seed for each. If they are 2^N then you could use xor to get
more randomness between runs.
Also in the algorithms above you need to change the
probabilities each time you take away one index from a group
(you don't want to draw from an empty group).
Well, actually, just select the single cyclic generator that is
larger or equal to N, then just redraw if it returns a value >=
N. Duh! Sloppy thinking. I would think you should be able to find
some prime sized ones that will get the next index with an
insignificant number of redraws.
But permutations is the way to go if you want scientific quality.