java.io.Serializable
, org.apache.commons.math3.random.RandomGenerator
public class XorShift1024StarPhiRandomGenerator
extends org.apache.commons.math3.random.AbstractRandomGenerator
implements java.io.Serializable
By using the supplied jump()
method it is possible to generate non-overlapping long sequences
for parallel computations. This class provides also a split()
method to support recursive parallel computations, in the spirit of
SplittableRandom
.
Note that this is not a secure generator.
it.unimi.dsi.util
,
Random
,
XorShift1024StarPhiRandom
,
Serialized FormConstructor | Description |
---|---|
XorShift1024StarPhiRandomGenerator() |
Creates a new generator seeded using
Util.randomSeed() . |
XorShift1024StarPhiRandomGenerator(long seed) |
Creates a new generator using a given seed.
|
Modifier and Type | Method | Description |
---|---|---|
void |
jump() |
The jump function for this generator.
|
boolean |
nextBoolean() |
|
void |
nextBytes(byte[] bytes) |
|
double |
nextDouble() |
|
double |
nextDoubleFast() |
Returns the next pseudorandom, uniformly distributed
double value between 0.0 and
1.0 from this random number generator's sequence,
using a fast multiplication-free method which, however,
can provide only 52 significant bits. |
float |
nextFloat() |
|
int |
nextInt() |
|
int |
nextInt(int n) |
|
long |
nextLong() |
|
long |
nextLong(long n) |
Returns a pseudorandom uniformly distributed
long value
between 0 (inclusive) and the specified value (exclusive), drawn from
this random number generator's sequence. |
void |
setSeed(long seed) |
Sets the seed of this generator.
|
void |
setState(long[] state,
int p) |
Sets the state of this generator.
|
XorShift1024StarPhiRandomGenerator |
split() |
Returns a new instance that shares no mutable state
with this instance.
|
public XorShift1024StarPhiRandomGenerator()
Util.randomSeed()
.public XorShift1024StarPhiRandomGenerator(long seed)
seed
- a seed for the generator.public long nextLong()
nextLong
in interface org.apache.commons.math3.random.RandomGenerator
nextLong
in class org.apache.commons.math3.random.AbstractRandomGenerator
public int nextInt()
nextInt
in interface org.apache.commons.math3.random.RandomGenerator
nextInt
in class org.apache.commons.math3.random.AbstractRandomGenerator
public int nextInt(int n)
nextInt
in interface org.apache.commons.math3.random.RandomGenerator
nextInt
in class org.apache.commons.math3.random.AbstractRandomGenerator
public long nextLong(long n)
long
value
between 0 (inclusive) and the specified value (exclusive), drawn from
this random number generator's sequence. The algorithm used to generate
the value guarantees that the result is uniform, provided that the
sequence of 64-bit values produced by this generator is.n
- the positive bound on the random number to be returned.long
value between 0
(inclusive) and n
(exclusive).public double nextDouble()
nextDouble
in interface org.apache.commons.math3.random.RandomGenerator
nextDouble
in class org.apache.commons.math3.random.AbstractRandomGenerator
public double nextDoubleFast()
double
value between 0.0
and
1.0
from this random number generator's sequence,
using a fast multiplication-free method which, however,
can provide only 52 significant bits.
This method is faster than nextDouble()
, but it
can return only dyadic rationals of the form k / 2−52,
instead of the standard k / 2−53.
The only difference between the output of this method and that of
nextDouble()
is an additional least significant bit set in half of the
returned values. For most applications, this difference is negligible.
double
value between 0.0
and 1.0
from this
random number generator's sequence, using 52 significant bits only.public float nextFloat()
nextFloat
in interface org.apache.commons.math3.random.RandomGenerator
nextFloat
in class org.apache.commons.math3.random.AbstractRandomGenerator
public boolean nextBoolean()
nextBoolean
in interface org.apache.commons.math3.random.RandomGenerator
nextBoolean
in class org.apache.commons.math3.random.AbstractRandomGenerator
public void nextBytes(byte[] bytes)
nextBytes
in interface org.apache.commons.math3.random.RandomGenerator
nextBytes
in class org.apache.commons.math3.random.AbstractRandomGenerator
public void jump()
nextLong()
; it can be used to generate 2512
non-overlapping subsequences for parallel computations.public XorShift1024StarPhiRandomGenerator split()
public void setSeed(long seed)
The argument will be used to seed a SplitMix64RandomGenerator
, whose output
will in turn be used to seed this generator. This approach makes “warmup” unnecessary,
and makes the probability of starting from a state
with a large fraction of bits set to zero astronomically small.
setSeed
in interface org.apache.commons.math3.random.RandomGenerator
setSeed
in class org.apache.commons.math3.random.AbstractRandomGenerator
seed
- a seed for the generator.public void setState(long[] state, int p)
The internal state of the generator will be reset, and the state array filled with the provided array.
state
- an array of 16 longs; at least one must be nonzero.p
- the internal index.