Class KISSRandom
java.lang.Object
org.apache.commons.rng.core.BaseProvider
org.apache.commons.rng.core.source32.IntProvider
org.apache.commons.rng.core.source32.KISSRandom
- All Implemented Interfaces:
RandomIntSource
,RestorableUniformRandomProvider
,UniformRandomProvider
Port from Marsaglia's
"KISS" algorithm.
This version contains the correction referred to
here
in a reply to the original post.
- Since:
- 1.0
- See Also:
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate static int
computeNew
(int mult, int previous) Compute new value.protected byte[]
Creates a snapshot of the RNG state.int
next()
Return the next random value.private void
setSeedInternal
(int[] seed) Seeds the RNG.protected void
setStateInternal
(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, resetCachedState
Methods inherited from class org.apache.commons.rng.core.BaseProvider
checkIndex, checkStateSize, composeStateInternal, extendSeed, extendSeed, fillState, fillState, restoreState, saveState, splitStateInternal, toString
-
Field Details
-
SEED_SIZE
private static final int SEED_SIZESize of the seed.- See Also:
-
z
private int zState variable. -
w
private int wState variable. -
jsr
private int jsrState variable. -
jcong
private int jcongState variable.
-
-
Constructor Details
-
KISSRandom
public KISSRandom(int[] seed) Creates a new instance.- Parameters:
seed
- Seed. If the length is larger than 4, only the first 4 elements will be used; if smaller, the remaining elements will be automatically set.
-
-
Method Details
-
getStateInternal
protected byte[] getStateInternal()Creates a snapshot of the RNG state.- Overrides:
getStateInternal
in classIntProvider
- Returns:
- the internal state.
-
setStateInternal
protected void setStateInternal(byte[] s) Resets the RNG to the givenstate
.- Overrides:
setStateInternal
in classIntProvider
- Parameters:
s
- State (previously obtained by a call toBaseProvider.getStateInternal()
).- See Also:
-
setSeedInternal
private void setSeedInternal(int[] seed) Seeds the RNG.- Parameters:
seed
- Seed.
-
next
public int next()Return the next random value.- Returns:
- the next random value.
-
computeNew
private static int computeNew(int mult, int previous) Compute new value.- Parameters:
mult
- Multiplier.previous
- Previous value.- Returns:
- new value.
-