Class PcgXshRs32
- java.lang.Object
-
- org.apache.commons.rng.core.BaseProvider
-
- org.apache.commons.rng.core.source32.IntProvider
-
- org.apache.commons.rng.core.source32.AbstractPcg6432
-
- org.apache.commons.rng.core.source32.PcgXshRs32
-
- All Implemented Interfaces:
RandomIntSource
,RestorableUniformRandomProvider
,UniformRandomProvider
public class PcgXshRs32 extends AbstractPcg6432
A Permuted Congruential Generator (PCG) that is composed of a 64-bit Linear Congruential Generator (LCG) combined with the XSH-RS (xorshift; random shift) output transformation to create 32-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 PcgXshRs32(long[] seed)
Creates a new instance.PcgXshRs32(java.lang.Long seed)
Creates a new instance using a default increment.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected int
transform(long x)
Transform the 64-bit state of the generator to a 32-bit output.-
Methods inherited from class org.apache.commons.rng.core.source32.AbstractPcg6432
getStateInternal, next, setStateInternal
-
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
-
-
-
-
Constructor Detail
-
PcgXshRs32
public PcgXshRs32(java.lang.Long seed)
Creates a new instance using a default increment.- Parameters:
seed
- Initial state.- Since:
- 1.4
-
PcgXshRs32
public PcgXshRs32(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
-
transform
protected int transform(long x)
Transform the 64-bit state of the generator to a 32-bit output. The transformation function shall vary with respect to different generators.- Specified by:
transform
in classAbstractPcg6432
- Parameters:
x
- State.- Returns:
- the output
-
-