Class MultiplyWithCarry256
java.lang.Object
org.apache.commons.rng.core.BaseProvider
org.apache.commons.rng.core.source32.IntProvider
org.apache.commons.rng.core.source32.MultiplyWithCarry256
- All Implemented Interfaces:
RandomIntSource,RestorableUniformRandomProvider,UniformRandomProvider
public class MultiplyWithCarry256 extends IntProvider
Port from Marsaglia's
"Multiply-With-Carry" algorithm.
Implementation is based on the (non-portable!) C code reproduced on that page.
- Since:
- 1.0
- See Also:
- Multiply with carry (Wikipedia)
-
Constructor Summary
Constructors Constructor Description MultiplyWithCarry256(int[] seed)Creates a new instance. -
Method Summary
Modifier and Type Method Description protected byte[]getStateInternal()Creates a snapshot of the RNG state.intnext()protected voidsetStateInternal(byte[] s)Resets the RNG to the givenstate.Methods inherited from class org.apache.commons.rng.core.source32.IntProvider
nextBoolean, nextBytes, nextBytes, nextDouble, nextFloat, nextInt, nextLongMethods inherited from class org.apache.commons.rng.core.BaseProvider
checkIndex, checkStateSize, composeStateInternal, fillState, fillState, nextInt, nextLong, restoreState, saveState, splitStateInternal, toString
-
Constructor Details
-
MultiplyWithCarry256
public MultiplyWithCarry256(int[] seed)Creates a new instance.- Parameters:
seed- Seed. If the length is larger than 257, only the first 257 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:
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:
BaseProvider.checkStateSize(byte[],int)
-
next
public int next()- Returns:
- the next random value.
-