Top Description Fields Constructors Methods
jdk.random

public final Class L64X1024MixRandom

extends AbstractSplittableWithBrineGenerator
Class Inheritance
Annotations
@RandomGeneratorProperties
name:L64X1024MixRandom
group:LXM
i:1024
j:1
k:64
equidistribution:16
Imports
java.util.concurrent.atomic.AtomicLong, java.util.random.RandomGenerator, jdk.internal.util.random.RandomSupport, .RandomSupport.AbstractSplittableWithBrineGenerator, .RandomSupport.RandomGeneratorProperties

A "splittable" pseudorandom number generator (PRNG) whose period is roughly 21088. Class L64X1024MixRandom 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 L64X1024MixRandom objects or streams of such objects.

The L64X1024MixRandom algorithm is a specific member of the LXM family of algorithms for pseudorandom number generators; for more information, see the documentation for package jdk.random. Each instance of L64X1024MixRandom has 1088 bits of state plus one 64-bit instance-specific parameter.

If two instances of L64X1024MixRandom 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.util.SplittableRandom, instances of L64X1024MixRandom are not thread-safe. They are designed to be split, not shared, across threads (see the split method). For example, a java.util.concurrent.ForkJoinTask fork/join-style computation using random numbers might include a construction of the form new Subtask(someL64X1024MixRandom.split()).fork().

This class provides additional methods for generating random streams, that employ the above techniques when used in stream.parallel() mode.

Instances of L64X1024MixRandom are not cryptographically secure. Consider instead using java.security.SecureRandom 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.

Since
17

Field Summary

Modifier and TypeField and Description
private final long
a

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
M

private static final int
N

private int
p

private long
s

The per-instance state: s for the LCG; the array x for the XBG; p is the rotating pointer into the array x.

private final long[]
x

Constructor Summary

AccessConstructor and Description
public
L64X1024MixRandom(long
additive parameter for the LCG
a
,
long
initial state for the LCG
s
,
long
first word of the initial state for the XBG
x0
,
long
second word of the initial state for the XBG
x1
,
long
third word of the initial state for the XBG
x2
,
long
fourth word of the initial state for the XBG
x3
,
long
fifth word of the initial state for the XBG
x4
,
long
sixth word of the initial state for the XBG
x5
,
long
seventh word of the initial state for the XBG
x6
,
long
eight word of the initial state for the XBG
x7
,
long
ninth word of the initial state for the XBG
x8
,
long
tenth word of the initial state for the XBG
x9
,
long
eleventh word of the initial state for the XBG
x10
,
long
twelfth word of the initial state for the XBG
x11
,
long
thirteenth word of the initial state for the XBG
x12
,
long
fourteenth word of the initial state for the XBG
x13
,
long
fifteenth word of the initial state for the XBG
x14
,
long
sixteenth word of the initial state for the XBG
x15
)

Basic constructor that initializes all fields from parameters.

public
L64X1024MixRandom(long
the initial seed
seed
)

Creates a new instance of L64X1024MixRandom using the specified long value as the initial seed.

public
L64X1024MixRandom()

Creates a new instance of L64X1024MixRandom that is likely to generate sequences of values that are statistically independent of those of any other instances in the current program execution, but may, and typically does, vary across program invocations.

public
L64X1024MixRandom(byte[]
the initial seed
seed
)

Creates a new instance of L64X1024MixRandom using the specified array of initial seed bytes.

Method Summary

Modifier and TypeMethod and Description
public long
nextLong()

Implements java.util.random.RandomGenerator.nextLong.

Returns a pseudorandomly chosen long value.
public RandomGenerator.SplittableGenerator
Inherited from jdk.internal.util.random.RandomSupport.AbstractSplittableWithBrineGenerator:
splitsplit

Field Detail

aback to summary
private final long a

The parameter that is used as an additive constant for the LCG. Must be odd.

defaultGenback to summary
private static final AtomicLong defaultGen

The seed generator for default constructors.

Mback to summary
private static final long M
Nback to summary
private static final int N
pback to summary
private int p
sback to summary
private long s

The per-instance state: s for the LCG; the array x for the XBG; p is the rotating pointer into the array x. At least one of the 16 elements of the array x must be nonzero.

xback to summary
private final long[] x

Constructor Detail

L64X1024MixRandomback to summary
public L64X1024MixRandom(long a, long s, long x0, long x1, long x2, long x3, long x4, long x5, long x6, long x7, long x8, long x9, long x10, long x11, long x12, long x13, long x14, long x15)

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.

Parameters
a:long

additive parameter for the LCG

s:long

initial state for the LCG

x0:long

first word of the initial state for the XBG

x1:long

second word of the initial state for the XBG

x2:long

third word of the initial state for the XBG

x3:long

fourth word of the initial state for the XBG

x4:long

fifth word of the initial state for the XBG

x5:long

sixth word of the initial state for the XBG

x6:long

seventh word of the initial state for the XBG

x7:long

eight word of the initial state for the XBG

x8:long

ninth word of the initial state for the XBG

x9:long

tenth word of the initial state for the XBG

x10:long

eleventh word of the initial state for the XBG

x11:long

twelfth word of the initial state for the XBG

x12:long

thirteenth word of the initial state for the XBG

x13:long

fourteenth word of the initial state for the XBG

x14:long

fifteenth word of the initial state for the XBG

x15:long

sixteenth word of the initial state for the XBG

L64X1024MixRandomback to summary
public L64X1024MixRandom(long seed)

Creates a new instance of L64X1024MixRandom using the specified long value as the initial seed. Instances of L64X1024MixRandom created with the same seed in the same program execution generate identical sequences of values.

Parameters
seed:long

the initial seed

L64X1024MixRandomback to summary
public L64X1024MixRandom()

Creates a new instance of L64X1024MixRandom that is likely to generate sequences of values that are statistically independent of those of any other instances in the current program execution, but may, and typically does, vary across program invocations.

L64X1024MixRandomback to summary
public L64X1024MixRandom(byte[] seed)

Creates a new instance of L64X1024MixRandom using the specified array of initial seed bytes. Instances of L64X1024MixRandom created with the same seed array in the same program execution generate identical sequences of values.

Parameters
seed:byte[]

the initial seed

Method Detail

nextLongback to summary
public long nextLong()

Implements java.util.random.RandomGenerator.nextLong.

Doc from java.util.random.RandomGenerator.nextLong.

Returns a pseudorandomly chosen long value.

Returns:long

a pseudorandomly chosen long value

Annotations
@Override
splitback to summary
public RandomGenerator.SplittableGenerator split(RandomGenerator.SplittableGenerator source, long brine)

Implements abstract jdk.internal.util.random.RandomSupport.AbstractSplittableWithBrineGenerator.split.

Annotations
@Override