public abstract class BaseProvider extends Object implements RestorableUniformRandomProvider
| Constructor and Description |
|---|
BaseProvider() |
| Modifier and Type | Method and Description |
|---|---|
protected void |
checkIndex(int min,
int max,
int index)
Checks whether
index is in the range [min, max]. |
protected void |
checkStateSize(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 static int[] |
extendSeed(int[] seed,
int length)
Extend the seed to the specified minimum length.
|
protected static long[] |
extendSeed(long[] seed,
int length)
Extend the seed to the specified minimum length.
|
protected void |
fillState(int[] state,
int[] seed)
Simple filling procedure.
|
protected void |
fillState(long[] state,
long[] seed)
Simple filling procedure.
|
protected byte[] |
getStateInternal()
Creates a snapshot of the RNG state.
|
void |
restoreState(RandomProviderState state) |
RandomProviderState |
saveState() |
protected void |
setStateInternal(byte[] state)
Resets the RNG to the given
state. |
protected byte[][] |
splitStateInternal(byte[] state,
int localStateLength)
Splits the given
state into a part to be consumed by the caller
in order to restore its local state, while the reminder is passed to
the parent class. |
String |
toString() |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitdoubles, doubles, doubles, doubles, ints, ints, ints, ints, longs, longs, longs, longs, nextBoolean, nextBytes, nextBytes, nextDouble, nextDouble, nextDouble, nextFloat, nextFloat, nextFloat, nextInt, nextInt, nextInt, nextLong, nextLong, nextLongpublic BaseProvider()
public RandomProviderState saveState()
saveState in interface RestorableUniformRandomProviderpublic void restoreState(RandomProviderState state)
restoreState in interface RestorableUniformRandomProviderprotected byte[] composeStateInternal(byte[] state, byte[] parentState)
getStateInternal(),
will end with a statement like the following:
return composeStateInternal(state,
super.getStateInternal());
where state is the state needed and defined by the class
where the method is overridden.state - State of the calling class.parentState - State of the calling class' parent.protected byte[][] splitStateInternal(byte[] state, int localStateLength)
state into 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 overridden setStateInternal(byte[]),
will contain statements like the following:
final byte[][] s = splitState(state, localStateLength);
// Use "s[0]" to recover the local state.
super.setStateInternal(s[1]);
where state is the combined state of the calling class and of
all its parents.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.IllegalStateException - if state.length < localStateLength.protected byte[] getStateInternal()
protected void setStateInternal(byte[] state)
state.state - State (previously obtained by a call to
getStateInternal()).IllegalStateException - if the size of the given array is
not consistent with the state defined by this class.checkStateSize(byte[],int)protected void fillState(int[] state, int[] seed)
state by copying
min(seed.length, state.length) elements from
seed,
state with non-zero
values (even if seed.length < state.length).
state - State. Must be allocated.seed - Seed. Cannot be null.protected void fillState(long[] state, long[] seed)
state by copying
min(seed.length, state.length) elements from
seed,
state with non-zero
values (even if seed.length < state.length).
state - State. Must be allocated.seed - Seed. Cannot be null.@Deprecated protected void checkStateSize(byte[] state, int expected)
state has the expected size.state - State.expected - Expected length of state array.IllegalStateException - if state.length < expected.protected void checkIndex(int min, int max, int index)
index is in the range [min, max].min - Lower bound.max - Upper bound.index - Value that must lie within the [min, max] interval.IndexOutOfBoundsException - if index is not within the
[min, max] interval.protected static long[] extendSeed(long[] seed, int length)
This method can be used in constructors that must pass their seed to the super class to avoid a duplication of seed expansion to the minimum length required by the super class and the class:
public RNG extends AnotherRNG {
public RNG(long[] seed) {
super(seed = extendSeed(seed, SEED_SIZE));
// Use seed for additional state ...
}
}
Note using the state filling procedure provided in fillState(long[], long[])
is not possible as it is an instance method. Calling a seed extension routine must use a
static method.
This method functions as if the seed has been extended using a
SplitMix64
generator seeded with seed[0], or zero if the input seed length is zero.
if (seed.length < length) {
final long[] s = Arrays.copyOf(seed, length);
final SplitMix64 rng = new SplitMix64(s[0]);
for (int i = seed.length; i < length; i++) {
s[i] = rng.nextLong();
}
return s;
}seed - Input seedlength - The minimum lengthprotected static int[] extendSeed(int[] seed, int length)
This method can be used in constructors that must pass their seed to the super class to avoid a duplication of seed expansion to the minimum length required by the super class and the class:
public RNG extends AnotherRNG {
public RNG(int[] seed) {
super(seed = extendSeed(seed, SEED_SIZE));
// Use seed for additional state ...
}
}
Note using the state filling procedure provided in fillState(int[], int[])
is not possible as it is an instance method. Calling a seed extension routine must use a
static method.
This method functions as if the seed has been extended using a
SplitMix64-style 32-bit
generator seeded with seed[0], or zero if the input seed length is zero. The
generator uses the 32-bit mixing function from MurmurHash3.
seed - Input seedlength - The minimum lengthCopyright © 2016–2022 The Apache Software Foundation. All rights reserved.