MersenneTwisterEngine

The Mersenne Twister generator.

struct MersenneTwisterEngine (
UIntType
size_t w
size_t n
size_t m
size_t r
UIntType a
size_t u
UIntType d
size_t s
UIntType b
size_t t
UIntType c
size_t l
UIntType f
) if (
isUnsigned!UIntType
) {
enum size_t stateSize;
enum size_t shiftSize;
enum size_t maskBits;
enum UIntType xorMask;
enum size_t temperingU;
enum UIntType temperingD;
enum size_t temperingS;
enum UIntType temperingB;
enum size_t temperingT;
enum UIntType temperingC;
enum size_t temperingL;
enum UIntType initializationMultiplier;
}

Constructors

this
this(UIntType value)

Constructs a MersenneTwisterEngine object.

Members

Functions

popFront
void popFront()

Advances the generator.

seed
void seed(UIntType value)

Seeds a MersenneTwisterEngine object. Note: This seed function gives 2^w starting points (the lowest w bits of the value provided will be used). To allow the RNG to be started in any one of its internal states use the seed overload taking an InputRange.

seed
void seed(T range)

Seeds a MersenneTwisterEngine object using an InputRange.

Properties

front
UIntType front [@property getter]

Returns the current random value.

save
typeof(this) save [@property getter]

Variables

defaultSeed
enum UIntType defaultSeed;

The default seed value.

empty
enum bool empty;

Always false.

isUniformRandom
enum bool isUniformRandom;

Mark this as a Rng

max
enum UIntType max;

Largest generated value.

min
enum UIntType min;

Smallest generated value (0).

wordSize
enum size_t wordSize;

Parameters for the generator.

Examples

// seed with a constant
Mt19937 gen;
auto n = gen.front; // same for each run
assert(n == 3499211612);

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

Meta

Suggestion Box / Bug Report