Class XoRoShiRo1024StarStar
- java.lang.Object
-
- org.apache.commons.rng.core.BaseProvider
-
- org.apache.commons.rng.core.source64.LongProvider
-
- org.apache.commons.rng.core.source64.XoRoShiRo1024StarStar
-
- All Implemented Interfaces:
RandomLongSource
,JumpableUniformRandomProvider
,LongJumpableUniformRandomProvider
,RestorableUniformRandomProvider
,UniformRandomProvider
public class XoRoShiRo1024StarStar extends LongProvider
A large-state all-purpose 64-bit generator.This is a member of the Xor-Shift-Rotate family of generators. Memory footprint is 1024 bits and the period is 21024-1.
Note: This can be used as a replacement for
XorShift1024Star
.- Since:
- 1.3
- See Also:
- Original source code, xorshiro / xoroshiro generators
-
-
Constructor Summary
Constructors Modifier Constructor Description XoRoShiRo1024StarStar(long[] seed)
Creates a new instance.protected
XoRoShiRo1024StarStar(XoRoShiRo1024StarStar source)
Creates a copy instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected XoRoShiRo1024StarStar
copy()
Create a copy.protected byte[]
getStateInternal()
Creates a snapshot of the RNG state.UniformRandomProvider
jump()
JumpableUniformRandomProvider
longJump()
long
next()
protected void
setStateInternal(byte[] s)
Resets the RNG to the givenstate
.protected long
transform(long s0, long s15)
Transform the two consecutive 64-bit states of the generator to a 64-bit output.-
Methods inherited from class org.apache.commons.rng.core.source64.LongProvider
nextBoolean, nextBytes, nextBytes, nextDouble, nextFloat, nextInt, nextLong, resetCachedState
-
Methods inherited from class org.apache.commons.rng.core.BaseProvider
checkIndex, checkStateSize, composeStateInternal, fillState, fillState, nextInt, nextLong, restoreState, saveState, splitStateInternal, toString
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.commons.rng.UniformRandomProvider
nextBoolean, nextBytes, nextBytes, nextDouble, nextFloat, nextInt, nextInt, nextLong, nextLong
-
-
-
-
Constructor Detail
-
XoRoShiRo1024StarStar
public XoRoShiRo1024StarStar(long[] seed)
Creates a new instance.- Parameters:
seed
- Initial seed. If the length is larger than 16, only the first 16 elements will be used; if smaller, the remaining elements will be automatically set. A seed containing all zeros will create a non-functional generator.
-
XoRoShiRo1024StarStar
protected XoRoShiRo1024StarStar(XoRoShiRo1024StarStar source)
Creates a copy instance.- Parameters:
source
- Source to copy.
-
-
Method Detail
-
transform
protected long transform(long s0, long s15)
Transform the two consecutive 64-bit states of the generator to a 64-bit output. The transformation function shall vary with respect to different generators.- Parameters:
s0
- The current state.s15
- The previous state.- Returns:
- the output
-
copy
protected XoRoShiRo1024StarStar copy()
Create a copy.- Returns:
- the copy
-
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)
-
next
public long next()
- Specified by:
next
in interfaceRandomLongSource
- Returns:
- the next random value.
-
jump
public UniformRandomProvider jump()
The jump size is the equivalent of 2512 calls to
nextLong()
. It can provide up to 2512 non-overlapping subsequences.- Specified by:
jump
in interfaceJumpableUniformRandomProvider
-
longJump
public JumpableUniformRandomProvider longJump()
The jump size is the equivalent of 2768 calls to
nextLong()
. It can provide up to 2256 non-overlapping subsequences of length 2768; each subsequence can provide up to 2256 non-overlapping subsequences of length 2512 using theJumpableUniformRandomProvider.jump()
method.- Specified by:
longJump
in interfaceLongJumpableUniformRandomProvider
-
-