Pwxrand : Pwrand
Like Pwrand, outputs values randomly from a list according to a list of weights, but Pwxrand will never output the same list element twice in a row.
w = Pwrand((1..10), (1..10).reciprocal.normalizeSum, inf).asStream;
w.nextN(20);
[ 1, 1, 2, 2, 6, 10, 6, 1, 1, 7, 1, 2, 8, 1, 1, 2, 5, 1, 1, 2 ]
x = Pwxrand((1..10), (1..10).reciprocal.normalizeSum, inf).asStream;
x.nextN(20);
[ 1, 2, 7, 10, 3, 2, 1, 2, 8, 1, 7, 2, 10, 8, 2, 5, 3, 9, 1, 6 ]