tango.math.random.Twister

License:
BSD style:

Version:
Jan 2008: Initial release

author:
KeYeR (D interface) keyer@team0xf.com

struct Twister;
Wrapper for the Mersenne twister.

The Mersenne twister is a pseudorandom number generator linked to CR developed in 1997 by Makoto Matsumoto and Takuji Nishimura that is based on a matrix linear recurrence over a finite binary field F2. It provides for fast generation of very high quality pseudorandom numbers, having been designed specifically to rectify many of the flaws found in older algorithms.

Mersenne Twister has the following desirable properties:
1. It was designed to have a period of 2^19937 - 1 (the creators
   of the algorithm proved this property).

2. It has a very high order of dimensional equidistribution.
   This implies that there is negligible serial correlation between
   successive values in the output sequence.

3. It passes numerous tests for statistical randomness, including
   the stringent Diehard tests.

4. It is fast.


static Twister instance;
A global, shared instance, seeded via startup time

static Twister opCall();
Creates and seeds a new generator with the current time

uint natural(uint max);
Returns X such that 0 <= X < max

uint natural(uint min, uint max);
Returns X such that min <= X < max

uint natural(bool pAddEntropy = false);
Returns X such that 0 <= X <= uint.max

double inclusive();
generates a random number on [0,1] interval

double exclusive();
generates a random number on (0,1) interval

double fraction();
generates a random number on [0,1) interval

double fractionEx();
generates a random number on [0,1) with 53-bit resolution

void seed();
Seed the generator with current time

void seed(uint s, bool pAddEntropy = false);
initializes the generator with a seed

void init(const(uint[]) init_key, bool pAddEntropy = false);
initialize by an array with array-length init_key is the array for initializing keys


Page generated by Ddoc. Copyright (C) 1997--2004, Makoto Matsumoto, Takuji Nishimura, and Eric Landry; All rights reserved