|
Uncommons Maths API (Version 1.2.3) |
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object java.util.Random org.uncommons.maths.random.MersenneTwisterRNG
public class MersenneTwisterRNG
Random number generator based on the Mersenne Twister algorithm developed by Makoto Matsumoto and Takuji Nishimura.
This is a very fast random number generator with good statistical
properties (it passes the full DIEHARD suite). This is the best RNG
for most experiments. If a non-linear generator is required, use
the slower AESCounterRNG
RNG.
This PRNG is deterministic, which can be advantageous for testing purposes since the output is repeatable. If multiple instances of this class are created with the same seed they will all have identical output.
This code is translated from the original C version and assumes that we will always seed from an array of bytes. I don't pretend to know the meanings of the magic numbers or how it works, it just does.
NOTE: Because instances of this class require 128-bit seeds, it is not
possible to seed this RNG using the Random.setSeed(long)
method inherited
from Random
. Calls to this method will have no effect.
Instead the seed must be set by a constructor.
Constructor Summary | |
---|---|
MersenneTwisterRNG()
Creates a new RNG and seeds it using the default seeding strategy. |
|
MersenneTwisterRNG(byte[] seed)
Creates an RNG and seeds it with the specified seed data. |
|
MersenneTwisterRNG(SeedGenerator seedGenerator)
Seed the RNG using the provided seed generation strategy. |
Method Summary | |
---|---|
byte[] |
getSeed()
|
protected int |
next(int bits)
|
Methods inherited from class java.util.Random |
---|
nextBoolean, nextBytes, nextDouble, nextFloat, nextGaussian, nextInt, nextInt, nextLong, setSeed |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public MersenneTwisterRNG()
public MersenneTwisterRNG(SeedGenerator seedGenerator) throws SeedException
seedGenerator
- The seed generation strategy that will provide
the seed value for this RNG.
SeedException
- If there is a problem generating a seed.public MersenneTwisterRNG(byte[] seed)
seed
- The seed data used to initialise the RNG.Method Detail |
---|
public byte[] getSeed()
getSeed
in interface RepeatableRNG
protected final int next(int bits)
next
in class Random
|
Uncommons Maths API (Version 1.2.3) |
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |