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

public final Class L128X1024MixRandom

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 21152. Class L128X1024MixRandom 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 L128X1024MixRandom objects or streams of such objects.

The L128X1024MixRandom 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 L128X1024MixRandom has 1152 bits of state plus one 128-bit instance-specific parameter.

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

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

Instances of L128X1024MixRandom 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
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 static final int
N

private int
p

private long
sh

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

private long
sl

The per-instance state: sh and sl 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
L128X1024MixRandom(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
,
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
L128X1024MixRandom(long
the initial seed
seed
)

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

public
L128X1024MixRandom()

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

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

ahback 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).

alback 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).

defaultGenback to summary
private static final AtomicLong defaultGen

The seed generator for default constructors.

MLback to summary
private static final long ML
Nback to summary
private static final int N
pback to summary
private int p
shback to summary
private long sh

The per-instance state: sh and sl 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.

slback to summary
private long sl

The per-instance state: sh and sl 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

L128X1024MixRandomback to summary
public L128X1024MixRandom(long ah, long al, long sh, long sl, 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
ah:long

high half of the additive parameter for the LCG

al:long

low half of the additive parameter for the LCG

sh:long

high half of the initial state for the LCG

sl:long

low half of the 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

L128X1024MixRandomback to summary
public L128X1024MixRandom(long seed)

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

Parameters
seed:long

the initial seed

L128X1024MixRandomback to summary
public L128X1024MixRandom()

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

L128X1024MixRandomback to summary
public L128X1024MixRandom(byte[] seed)

Creates a new instance of L128X1024MixRandom using the specified array of initial seed bytes. Instances of L128X1024MixRandom 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.

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