APIdia Launch Partner
Top Description Fields Constructors Methods
jdk.internal.random

public final Class L32X64MixRandom

extends AbstractSplittableWithBrineGenerator
Class Inheritance
Imports
java.util.concurrent.atomic.AtomicLong, java.util.random.RandomGenerator, jdk.internal.util.random.RandomSupport, .RandomSupport.AbstractSplittableWithBrineGenerator

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

The L32X64MixRandom 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 L32X64MixRandom has 96 bits of state plus one 32-bit instance-specific parameter.

If two instances of L32X64MixRandom 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 L32X64MixRandom 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(someL32X64MixRandom.split()).fork().

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

Instances of L32X64MixRandom 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 int
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 int
M

private int
s

The per-instance state: s for the LCG; x0 and x1 for the XBG.

private int
x0

The per-instance state: s for the LCG; x0 and x1 for the XBG.

private int
x1

The per-instance state: s for the LCG; x0 and x1 for the XBG.

Constructor Summary

AccessConstructor and Description
public
L32X64MixRandom(int
additive parameter for the LCG
a
,
int
initial state for the LCG
s
,
int
first word of the initial state for the XBG
x0
,
int
second word of the initial state for the XBG
x1
)

Basic constructor that initializes all fields from parameters.

public
L32X64MixRandom(long
the initial seed
seed
)

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

public
L32X64MixRandom()

Creates a new instance of L32X64MixRandom 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
L32X64MixRandom(byte[]
the initial seed
seed
)

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

Method Summary

Modifier and TypeMethod and Description
public int
nextInt()

Overrides default java.util.random.RandomGenerator.nextInt.

Returns a pseudorandomly chosen int value.

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 int 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 int M
sback to summary
private int s

The per-instance state: s for the LCG; x0 and x1 for the XBG. At least one of x0 and x1 must be nonzero.

x0back to summary
private int x0

The per-instance state: s for the LCG; x0 and x1 for the XBG. At least one of x0 and x1 must be nonzero.

x1back to summary
private int x1

The per-instance state: s for the LCG; x0 and x1 for the XBG. At least one of x0 and x1 must be nonzero.

Constructor Detail

L32X64MixRandomback to summary
public L32X64MixRandom(int a, int s, int x0, int 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.

Parameters
a:int

additive parameter for the LCG

s:int

initial state for the LCG

x0:int

first word of the initial state for the XBG

x1:int

second word of the initial state for the XBG

L32X64MixRandomback to summary
public L32X64MixRandom(long seed)

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

Parameters
seed:long

the initial seed

L32X64MixRandomback to summary
public L32X64MixRandom()

Creates a new instance of L32X64MixRandom 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.

L32X64MixRandomback to summary
public L32X64MixRandom(byte[] seed)

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

Parameters
seed:byte[]

the initial seed

Method Detail

nextIntback to summary
public int nextInt()

Overrides default java.util.random.RandomGenerator.nextInt.

Doc from java.util.random.RandomGenerator.nextInt.

Returns a pseudorandomly chosen int value.

Annotations
@Override
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.

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