The OpenD Programming Language

MinstdRand

Define LinearCongruentialEngine generators with well-chosen parameters. MinstdRand0 implements Park and Miller's "minimal standard" generator that uses 16807 for the multiplier. MinstdRand implements a variant that has slightly better spectral behavior by using the multiplier 48271. Both generators are rather simplistic.

import std.random;
alias MinstdRand = LinearCongruentialEngine!(uint, 48_271, 0, 2_147_483_647)

Examples

// seed with a constant
auto rnd0 = MinstdRand0(1);
auto n = rnd0.front;
 // same for each run
assert(n == 16807);

// Seed with an unpredictable value
rnd0.seed(unpredictableSeed);
n = rnd0.front; // different across runs

Meta