On 1/19/22 13:59, forkit wrote: > void createBoolMatrix(ref uint[][] m) > { > auto rnd = Random(unpredictableSeed);
That works but would be unnecessarily slow and be against the idea of random number generators. The usual approach is, once you have a randomized sequence, you just continue using it. For example, I move rnd to module scope and initialize it once.
Random rnd; shared static this() { rnd = Random(unpredictableSeed); } auto randomValue() { return cast(uint)rnd.dice(0.6, 1.4); } // Returning a dynamically allocated array looks expensive // here. Why not use a struct or std.typecons.Tuple instead? auto randomTuple() { return [ randomValue(), randomValue() ]; } void createBoolMatrix(ref uint[][] m, size_t count) { import std.algorithm : map; import std.range : iota; m = count.iota.map!(i => randomTuple()).array; } Ali