Class XoRoShiRo1024PlusPlus
- java.lang.Object
-
- org.apache.commons.rng.core.BaseProvider
-
- org.apache.commons.rng.core.source64.LongProvider
-
- org.apache.commons.rng.core.source64.XoRoShiRo1024PlusPlus
-
- All Implemented Interfaces:
RandomLongSource
,JumpableUniformRandomProvider
,LongJumpableUniformRandomProvider
,RestorableUniformRandomProvider
,UniformRandomProvider
public class XoRoShiRo1024PlusPlus 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 XoRoShiRo1024PlusPlus(long[] seed)
Creates a new instance.protected
XoRoShiRo1024PlusPlus(XoRoShiRo1024PlusPlus source)
Creates a copy instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected XoRoShiRo1024PlusPlus
copy()
Create a copy.protected byte[]
getStateInternal()
Creates a snapshot of the RNG state.UniformRandomProvider
jump()
JumpableUniformRandomProvider
longJump()
long
next()
Return the next random value.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, nextInt, nextLong, resetCachedState
-
Methods inherited from class org.apache.commons.rng.core.BaseProvider
checkIndex, checkStateSize, composeStateInternal, extendSeed, extendSeed, fillState, fillState, 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.JumpableUniformRandomProvider
jumps, jumps
-
Methods inherited from interface org.apache.commons.rng.LongJumpableUniformRandomProvider
longJumps, longJumps
-
Methods inherited from interface org.apache.commons.rng.UniformRandomProvider
doubles, doubles, doubles, doubles, ints, ints, ints, ints, longs, longs, longs, longs, nextBoolean, nextBytes, nextBytes, nextDouble, nextDouble, nextDouble, nextFloat, nextFloat, nextFloat, nextInt, nextInt, nextInt, nextLong, nextLong, nextLong
-
-
-
-
Constructor Detail
-
XoRoShiRo1024PlusPlus
public XoRoShiRo1024PlusPlus(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.
-
XoRoShiRo1024PlusPlus
protected XoRoShiRo1024PlusPlus(XoRoShiRo1024PlusPlus 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 XoRoShiRo1024PlusPlus 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()
Return the next random value.- 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
-
-