Package org.uncommons.maths.random
Class XORShiftRNG
- java.lang.Object
-
- java.util.Random
-
- org.uncommons.maths.random.XORShiftRNG
-
- All Implemented Interfaces:
java.io.Serializable
,RepeatableRNG
public class XORShiftRNG extends java.util.Random implements RepeatableRNG
Very fast pseudo random number generator. See this page for a description. This RNG has a period of about 2^160, which is not as long as the
MersenneTwisterRNG
but it is faster.NOTE: Because instances of this class require 160-bit seeds, it is not possible to seed this RNG using the
Random.setSeed(long)
method inherited fromRandom
. Calls to this method will have no effect. Instead the seed must be set by a constructor.- Since:
- 1.2
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description XORShiftRNG()
Creates a new RNG and seeds it using the default seeding strategy.XORShiftRNG(byte[] seed)
Creates an RNG and seeds it with the specified seed data.XORShiftRNG(SeedGenerator seedGenerator)
Seed the RNG using the provided seed generation strategy.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description byte[]
getSeed()
protected int
next(int bits)
-
-
-
Field Detail
-
SEED_SIZE_BYTES
private static final int SEED_SIZE_BYTES
- See Also:
- Constant Field Values
-
state1
private int state1
-
state2
private int state2
-
state3
private int state3
-
state4
private int state4
-
state5
private int state5
-
seed
private final byte[] seed
-
lock
private final java.util.concurrent.locks.ReentrantLock lock
-
-
Constructor Detail
-
XORShiftRNG
public XORShiftRNG()
Creates a new RNG and seeds it using the default seeding strategy.
-
XORShiftRNG
public XORShiftRNG(SeedGenerator seedGenerator) throws SeedException
Seed the RNG using the provided seed generation strategy.- Parameters:
seedGenerator
- The seed generation strategy that will provide the seed value for this RNG.- Throws:
SeedException
- If there is a problem generating a seed.
-
XORShiftRNG
public XORShiftRNG(byte[] seed)
Creates an RNG and seeds it with the specified seed data.- Parameters:
seed
- The seed data used to initialise the RNG.
-
-
Method Detail
-
getSeed
public byte[] getSeed()
- Specified by:
getSeed
in interfaceRepeatableRNG
- Returns:
- The seed data used to initialise this pseudo-random number generator.
-
next
protected int next(int bits)
- Overrides:
next
in classjava.util.Random
-
-