L128X128MixRandom
implements
interfaces RandomGenerator
and SplittableGenerator
,
and therefore supports methods for producing pseudorandomly chosen
values of type int
, long
, float
, double
,
and boolean
(and for producing streams of pseudorandomly chosen
numbers of type int
, long
, and double
),
as well as methods for creating new split-off L128X128MixRandom
objects or streams of such objects.
The L128X128MixRandom
algorithm is a specific member of
the LXM family of algorithms for pseudorandom number generators;
for more information, see the documentation for package
jdk.
. Each instance of L128X128MixRandom
has 256 bits of state plus one 128-bit instance-specific parameter.
If two instances of L128X128MixRandom
are created with
the same seed within the same program execution, and the same
sequence of method calls is made for each, they will generate and
return identical sequences of values.
As with java.
, instances of
L128X128MixRandom
are not thread-safe. They are
designed to be split, not shared, across threads (see the split
method). For example, a java.
fork/join-style computation using random numbers might include a
construction of the form
new Subtask(someL128X128MixRandom.split()).fork()
.
This class provides additional methods for generating random
streams, that employ the above techniques when used in
stream.parallel()
mode.
Instances of L128X128MixRandom
are not cryptographically
secure. Consider instead using java.
in security-sensitive applications. Additionally,
default-constructed instances do not use a cryptographically random
seed unless the system property
java.util.secureRandomSeed
is set to true
.
Modifier and Type | Field and Description |
---|---|
private final long | ah
The parameter that is used as an additive constant for the LCG. |
private final long | al
The parameter that is used as an additive constant for the LCG. |
private static final AtomicLong | defaultGen
The seed generator for default constructors. |
private static final long | |
private long | sh
The per-instance state: sh and sl for the LCG; x0 and x1 for the XBG. |
private long | sl
The per-instance state: sh and sl for the LCG; x0 and x1 for the XBG. |
private long | x0
The per-instance state: sh and sl for the LCG; x0 and x1 for the XBG. |
private long | x1
The per-instance state: sh and sl for the LCG; x0 and x1 for the XBG. |
Access | Constructor and Description |
---|---|
public | L128X128MixRandom(long
high half of the additive parameter for the LCG ah, long low half of the additive parameter for the LCG al, long high half of the initial state for the LCG sh, long low half of the initial state for the LCG sl, long first word of the initial state for the XBG x0, long second word of the initial state for the XBG x1)Basic constructor that initializes all fields from parameters. |
public | L128X128MixRandom(long
the initial seed seed)Creates a new instance of |
public | L128X128MixRandom()
Creates a new instance of |
public | L128X128MixRandom(byte[]
the initial seed seed)Creates a new instance of |
Modifier and Type | Method and Description |
---|---|
public long | nextLong()
Implements java. Returns a pseudorandomly chosen |
public RandomGenerator. | split(RandomGenerator.
Implements abstract jdk.
|
ah | back to summary |
---|---|
private final long ah The parameter that is used as an additive constant for the LCG. Must be odd (therefore al must be odd). |
al | back to summary |
---|---|
private final long al The parameter that is used as an additive constant for the LCG. Must be odd (therefore al must be odd). |
defaultGen | back to summary |
---|---|
private static final AtomicLong defaultGen The seed generator for default constructors. |
ML | back to summary |
---|---|
private static final long ML |
sh | back to summary |
---|---|
private long sh The per-instance state: sh and sl for the LCG; x0 and x1 for the XBG. At least one of x0 and x1 must be nonzero. |
sl | back to summary |
---|---|
private long sl The per-instance state: sh and sl for the LCG; x0 and x1 for the XBG. At least one of x0 and x1 must be nonzero. |
x0 | back to summary |
---|---|
private long x0 The per-instance state: sh and sl for the LCG; x0 and x1 for the XBG. At least one of x0 and x1 must be nonzero. |
x1 | back to summary |
---|---|
private long x1 The per-instance state: sh and sl for the LCG; x0 and x1 for the XBG. At least one of x0 and x1 must be nonzero. |
L128X128MixRandom | back to summary |
---|---|
public L128X128MixRandom(long ah, long al, long sh, long sl, long x0, long x1) Basic constructor that initializes all fields from parameters. It then adjusts the field values if necessary to ensure that all constraints on the values of fields are met.
|
L128X128MixRandom | back to summary |
---|---|
public L128X128MixRandom(long seed) Creates a new instance of
|
L128X128MixRandom | back to summary |
---|---|
public L128X128MixRandom() Creates a new instance of |
L128X128MixRandom | back to summary |
---|---|
public L128X128MixRandom(byte[] seed) Creates a new instance of
|
nextLong | back to summary |
---|---|
public long nextLong() Implements java. Doc from java. Returns a pseudorandomly chosen
|
split | back to summary |
---|---|
public RandomGenerator. Implements abstract jdk.
|