Package org.apache.commons.rng.core
Class BaseProvider
- java.lang.Object
-
- org.apache.commons.rng.core.BaseProvider
-
- All Implemented Interfaces:
RestorableUniformRandomProvider,UniformRandomProvider
- Direct Known Subclasses:
IntProvider,LongProvider
public abstract class BaseProvider extends Object implements RestorableUniformRandomProvider
Base class with default implementation for common methods.
-
-
Constructor Summary
Constructors Constructor Description BaseProvider()
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected voidcheckIndex(int min, int max, int index)Checks whetherindexis in the range[min, max].protected voidcheckStateSize(byte[] state, int expected)Deprecated.Method is used internally and should be made private in some future release.protected byte[]composeStateInternal(byte[] state, byte[] parentState)Combine parent and subclass states.protected voidfillState(int[] state, int[] seed)Simple filling procedure.protected voidfillState(long[] state, long[] seed)Simple filling procedure.protected byte[]getStateInternal()Creates a snapshot of the RNG state.intnextInt(int n)longnextLong(long n)voidrestoreState(RandomProviderState state)RandomProviderStatesaveState()protected voidsetStateInternal(byte[] state)Resets the RNG to the givenstate.protected byte[][]splitStateInternal(byte[] state, int localStateLength)Splits the givenstateinto a part to be consumed by the caller in order to restore its local state, while the reminder is passed to the parent class.StringtoString()-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.commons.rng.UniformRandomProvider
nextBoolean, nextBytes, nextBytes, nextDouble, nextFloat, nextInt, nextLong
-
-
-
-
Constructor Detail
-
BaseProvider
public BaseProvider()
-
-
Method Detail
-
nextInt
public int nextInt(int n)
- Specified by:
nextIntin interfaceUniformRandomProvider
-
nextLong
public long nextLong(long n)
- Specified by:
nextLongin interfaceUniformRandomProvider
-
saveState
public RandomProviderState saveState()
- Specified by:
saveStatein interfaceRestorableUniformRandomProvider
-
restoreState
public void restoreState(RandomProviderState state)
- Specified by:
restoreStatein interfaceRestorableUniformRandomProvider
-
composeStateInternal
protected byte[] composeStateInternal(byte[] state, byte[] parentState)
Combine parent and subclass states. This method must be called by all subclasses in order to ensure that state can be restored in case some of it is stored higher up in the class hierarchy. I.e. the body of the overriddengetStateInternal(), will end with a statement like the following:
wherereturn composeStateInternal(state, super.getStateInternal());stateis the state needed and defined by the class where the method is overridden.- Parameters:
state- State of the calling class.parentState- State of the calling class' parent.- Returns:
- the combined state. Bytes that belong to the local state will be stored at the beginning of the resulting array.
-
splitStateInternal
protected byte[][] splitStateInternal(byte[] state, int localStateLength)
Splits the givenstateinto a part to be consumed by the caller in order to restore its local state, while the reminder is passed to the parent class. I.e. the body of the overriddensetStateInternal(byte[]), will contain statements like the following:
wherefinal byte[][] s = splitState(state, localStateLength); // Use "s[0]" to recover the local state. super.setStateInternal(s[1]);stateis the combined state of the calling class and of all its parents.- Parameters:
state- State. The local state must be stored at the beginning of the array.localStateLength- Number of elements that will be consumed by the locally defined state.- Returns:
- the local state (in slot 0) and the parent state (in slot 1).
- Throws:
IllegalStateException- ifstate.length < localStateLength.
-
getStateInternal
protected byte[] getStateInternal()
Creates a snapshot of the RNG state.- Returns:
- the internal state.
-
setStateInternal
protected void setStateInternal(byte[] state)
Resets the RNG to the givenstate.- Parameters:
state- State (previously obtained by a call togetStateInternal()).- Throws:
IllegalStateException- if the size of the given array is not consistent with the state defined by this class.- See Also:
checkStateSize(byte[],int)
-
fillState
protected void fillState(int[] state, int[] seed)
Simple filling procedure. It will-
fill the beginning of
stateby copyingmin(seed.length, state.length)elements fromseed, -
set all remaining elements of
statewith non-zero values (even ifseed.length < state.length).
- Parameters:
state- State. Must be allocated.seed- Seed. Cannot be null.
-
fill the beginning of
-
fillState
protected void fillState(long[] state, long[] seed)
Simple filling procedure. It will-
fill the beginning of
stateby copyingmin(seed.length, state.length)elements fromseed, -
set all remaining elements of
statewith non-zero values (even ifseed.length < state.length).
- Parameters:
state- State. Must be allocated.seed- Seed. Cannot be null.
-
fill the beginning of
-
checkStateSize
@Deprecated protected void checkStateSize(byte[] state, int expected)
Deprecated.Method is used internally and should be made private in some future release.Checks that thestatehas theexpectedsize.- Parameters:
state- State.expected- Expected length ofstatearray.- Throws:
IllegalStateException- ifstate.length < expected.
-
checkIndex
protected void checkIndex(int min, int max, int index)
Checks whetherindexis in the range[min, max].- Parameters:
min- Lower bound.max- Upper bound.index- Value that must lie within the[min, max]interval.- Throws:
IndexOutOfBoundsException- ifindexis not within the[min, max]interval.
-
-