SplitMix64Random instead.@Deprecated public class XorShift64StarRandom extends Random
| Constructor and Description |
|---|
XorShift64StarRandom()
Deprecated.
Creates a new generator seeded using
Util.randomSeed(). |
XorShift64StarRandom(long seed)
Deprecated.
Creates a new generator using a given seed.
|
| Modifier and Type | Method and Description |
|---|---|
protected int |
next(int bits)
Deprecated.
|
boolean |
nextBoolean()
Deprecated.
|
void |
nextBytes(byte[] bytes)
Deprecated.
|
double |
nextDouble()
Deprecated.
|
float |
nextFloat()
Deprecated.
|
int |
nextInt()
Deprecated.
|
int |
nextInt(int n)
Deprecated.
Returns a pseudorandom, approximately uniformly distributed
int value
between 0 (inclusive) and the specified value (exclusive), drawn from
this random number generator's sequence. |
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.
|
public XorShift64StarRandom()
Util.randomSeed().public XorShift64StarRandom(long seed)
seed - a nonzero seed for the generator (if zero, the generator will be seeded with -1).public int nextInt(int n)
int value
between 0 (inclusive) and the specified value (exclusive), drawn from
this random number generator's sequence.
The hedge “approximately” is due to the fact that to be always
faster than ThreadLocalRandom
we return
the upper 63 bits of nextLong() modulo n instead of using
Random's fancy algorithm (which nextLong(long) uses though).
This choice introduces a bias: the numbers from 0 to 263 mod n
are slightly more likely than the other ones. In the worst case, “more likely”
means 1.00000000023 times more likely, which is in practice undetectable (actually,
due to the abysmally low quality of Random's generator, the result is statistically
better in any case than Random.nextInt(int)'s) .
If for some reason you need truly uniform generation, just use nextLong(long).
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 class Randompublic boolean nextBoolean()
nextBoolean in class Randompublic void setSeed(long seed)
The seed will be passed through HashCommon.murmurHash3(long). In this way, if the
user passes a small value we will avoid the short irregular transient associated
with states with a very small number of bits set.
setSeed in class Randomseed - a nonzero seed for this generator (if zero, the generator will be seeded with Long.MIN_VALUE).public void setState(long state)
state - the new state for this generator (must be nonzero).