Class PcgRxsMXs64
- java.lang.Object
-
- org.apache.commons.rng.core.BaseProvider
-
- org.apache.commons.rng.core.source64.LongProvider
-
- org.apache.commons.rng.core.source64.PcgRxsMXs64
-
- All Implemented Interfaces:
RandomLongSource
,RestorableUniformRandomProvider
,UniformRandomProvider
public class PcgRxsMXs64 extends LongProvider
A Permuted Congruential Generator (PCG) that is composed of a 64-bit Linear Congruential Generator (LCG) combined with the RXS-M-XS (random xorshift; multiply; xorshift) output transformation to create 64-bit output.State size is 128 bits and the period is 264.
Note: Although the seed size is 128 bits, only the first 64 are effective: in effect, two seeds that only differ by the last 64 bits may produce highly correlated sequences.
- Since:
- 1.3
- See Also:
- PCG, A Family of Better Random Number Generators
-
-
Constructor Summary
Constructors Constructor Description PcgRxsMXs64(long[] seed)
Creates a new instance.PcgRxsMXs64(Long seed)
Creates a new instance using a default increment.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected byte[]
getStateInternal()
Creates a snapshot of the RNG state.long
next()
Return the next random value.protected void
setStateInternal(byte[] s)
Resets the RNG to the givenstate
.-
Methods inherited from class org.apache.commons.rng.core.source64.LongProvider
nextBoolean, nextInt, nextLong, resetCachedState
-
Methods inherited from class org.apache.commons.rng.core.BaseProvider
checkIndex, checkStateSize, composeStateInternal, extendSeed, extendSeed, fillState, fillState, restoreState, saveState, splitStateInternal, toString
-
-
-
-
Constructor Detail
-
PcgRxsMXs64
public PcgRxsMXs64(Long seed)
Creates a new instance using a default increment.- Parameters:
seed
- Initial state.- Since:
- 1.4
-
PcgRxsMXs64
public PcgRxsMXs64(long[] seed)
Creates a new instance.Note: Although the seed size is 128 bits, only the first 64 are effective: in effect, two seeds that only differ by the last 64 bits may produce highly correlated sequences.
- Parameters:
seed
- Initial seed. If the length is larger than 2, only the first 2 elements will be used; if smaller, the remaining elements will be automatically set.The 1st element is used to set the LCG state. The 2nd element is used to set the LCG increment; the most significant bit is discarded by left shift and the increment is set to odd.
-
-
Method Detail
-
next
public long next()
Return the next random value.- Returns:
- the next random value.
-
getStateInternal
protected byte[] getStateInternal()
Creates a snapshot of the RNG state.- Overrides:
getStateInternal
in classLongProvider
- Returns:
- the internal state.
-
setStateInternal
protected void setStateInternal(byte[] s)
Resets the RNG to the givenstate
.- Overrides:
setStateInternal
in classLongProvider
- Parameters:
s
- State (previously obtained by a call toBaseProvider.getStateInternal()
).- See Also:
BaseProvider.checkStateSize(byte[],int)
-
-