XoRoShiRo128PlusRandomGenerator instead.@Deprecated public class XorShift128PlusRandomGenerator extends AbstractRandomGenerator
Warning: this generator has been superseded by XoRoShiRo128PlusRandom,
which is faster and has stronger statistical properties.
More details can be found in my paper “Further scramblings
of Marsaglia's xorshift generators”, 2015, and
on the xoroshiro+/xorshift*/xorshift+
generators and the PRNG shootout page.
The basic idea is taken from Mutsuo Saito and Makuto Matsumoto's
XSadd generator, which
is however based on 32-bit shifts and fails several statistical tests when reversed.
Note that this is
not a cryptographic-strength pseudorandom number generator, but its quality is
preposterously higher than Random's, and its cycle length is
2128 − 1, which is more than enough for any single-thread application.
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
Java 8's SplittableRandom.
it.unimi.dsi.util,
RandomGenerator,
XorShift128PlusRandom| Constructor and Description |
|---|
XorShift128PlusRandomGenerator()
Deprecated.
Creates a new generator seeded using
Util.randomSeed(). |
XorShift128PlusRandomGenerator(long seed)
Deprecated.
Creates a new generator using a given seed.
|
| Modifier and Type | Method and Description |
|---|---|
void |
jump()
Deprecated.
The the jump function for this generator.
|
static void |
main(String[] arg)
Deprecated.
|
boolean |
nextBoolean()
Deprecated.
|
void |
nextBytes(byte[] bytes)
Deprecated.
|
double |
nextDouble()
Deprecated.
|
float |
nextFloat()
Deprecated.
|
int |
nextInt()
Deprecated.
|
int |
nextInt(int n)
Deprecated.
|
long |
nextLong()
Deprecated.
|
long |
nextLong(long n)
Deprecated.
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)
Deprecated.
Sets the seed of this generator.
|
void |
setState(long[] state)
Deprecated.
Sets the state of this generator.
|
XorShift128PlusRandomGenerator |
split()
Deprecated.
Returns a new instance that shares no mutable state
with this instance.
|
clear, nextGaussian, setSeed, setSeedpublic XorShift128PlusRandomGenerator()
Util.randomSeed().public XorShift128PlusRandomGenerator(long seed)
seed - a nonzero seed for the generator (if zero, the generator will be seeded with -1).public long nextLong()
nextLong in interface RandomGeneratornextLong in class AbstractRandomGeneratorpublic int nextInt()
nextInt in interface RandomGeneratornextInt in class AbstractRandomGeneratorpublic int nextInt(int n)
nextInt in interface RandomGeneratornextInt in class AbstractRandomGeneratorpublic 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 RandomGeneratornextDouble in class AbstractRandomGeneratorpublic float nextFloat()
nextFloat in interface RandomGeneratornextFloat in class AbstractRandomGeneratorpublic boolean nextBoolean()
nextBoolean in interface RandomGeneratornextBoolean in class AbstractRandomGeneratorpublic void nextBytes(byte[] bytes)
nextBytes in interface RandomGeneratornextBytes in class AbstractRandomGeneratorpublic void jump()
nextLong(); it can be used to generate 264
non-overlapping subsequences for parallel computations.public XorShift128PlusRandomGenerator 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 RandomGeneratorsetSeed in class AbstractRandomGeneratorseed - a nonzero seed for this generator.public void setState(long[] state)
The internal state of the generator will be reset, and the state array filled with the provided array.
state - an array of 2 longs; at least one must be nonzero.public static void main(String[] arg)