Class AbstractWell
java.lang.Object
org.apache.commons.rng.core.BaseProvider
org.apache.commons.rng.core.source32.IntProvider
org.apache.commons.rng.core.source32.AbstractWell
- All Implemented Interfaces:
RandomIntSource,RestorableUniformRandomProvider,UniformRandomProvider
- Direct Known Subclasses:
Well1024a,Well19937a,Well44497a,Well512a
This abstract class implements the WELL class of pseudo-random number
generator from François Panneton, Pierre L'Ecuyer and Makoto
Matsumoto.
This generator is described in a paper by François Panneton, Pierre L'Ecuyer and Makoto Matsumoto Improved Long-Period Generators Based on Linear Recurrences Modulo 2 ACM Transactions on Mathematical Software, 32, 1 (2006). The errata for the paper are in wellrng-errata.txt.
- Since:
- 1.0
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static final classInner class used to store the indirection index table which is fixed for a given type of WELL class of pseudo-random number generator. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final intBlock size.protected intCurrent index in the bytes pool.protected final int[]Bytes pool. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedAbstractWell(int k, int[] seed) Creates an instance with the givenseed. -
Method Summary
Modifier and TypeMethodDescriptionprivate static intcalculateBlockCount(int k) Calculate the number of 32-bits blocks.protected byte[]Creates a snapshot of the RNG state.private voidsetSeedInternal(int[] seed) Initializes the generator with the givenseed.protected voidsetStateInternal(byte[] s) Resets the RNG to the givenstate.Methods inherited from class org.apache.commons.rng.core.source32.IntProvider
nextBoolean, nextBytes, nextBytes, nextBytesFill, nextDouble, nextInt, nextLong, resetCachedStateMethods inherited from class org.apache.commons.rng.core.BaseProvider
checkIndex, checkStateSize, composeStateInternal, extendSeed, extendSeed, fillState, fillState, restoreState, saveState, splitStateInternal, toStringMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.apache.commons.rng.core.source32.RandomIntSource
next
-
Field Details
-
BLOCK_SIZE
private static final int BLOCK_SIZEBlock size.- See Also:
-
index
protected int indexCurrent index in the bytes pool. -
v
protected final int[] vBytes pool.
-
-
Constructor Details
-
AbstractWell
protected AbstractWell(int k, int[] seed) Creates an instance with the givenseed.- Parameters:
k- Number of bits in the pool (not necessarily a multiple of 32).seed- Initial seed.
-
-
Method Details
-
getStateInternal
protected byte[] getStateInternal()Creates a snapshot of the RNG state.- Overrides:
getStateInternalin classIntProvider- Returns:
- the internal state.
-
setStateInternal
protected void setStateInternal(byte[] s) Resets the RNG to the givenstate.- Overrides:
setStateInternalin classIntProvider- Parameters:
s- State (previously obtained by a call toBaseProvider.getStateInternal()).- See Also:
-
setSeedInternal
private void setSeedInternal(int[] seed) Initializes the generator with the givenseed.- Parameters:
seed- Seed. Cannot be null.
-
calculateBlockCount
private static int calculateBlockCount(int k) Calculate the number of 32-bits blocks.- Parameters:
k- Number of bits in the pool (not necessarily a multiple of 32).- Returns:
- the number of 32-bits blocks.
-