Класс SplittableRandom
- Все реализуемые интерфейсы:
RandomGenerator, RandomGenerator.SplittableGenerator, RandomGenerator.StreamableGenerator
public final class SplittableRandom extends Object implements RandomGenerator, RandomGenerator.SplittableGenerator
SplittableRandom предоставляет методы для генерации псевдослучайных чисел типов int, long и double, аналогичные по использованию методам класса Random, но отличается следующими особенностями: - Последовательности генерируемых значений проходят набор тестов DieHarder на независимость и равномерность генераторов случайных чисел. (Последняя проверка выполнена с помощью версии 3.31.1.) Эти тесты проверяют только методы для некоторых типов и диапазонов, однако ожидается, что аналогичные свойства, по крайней мере приблизительно, будут выполняться и для остальных. Период (длина любой последовательности генерируемых значений до её повторения) равен 264.
- Метод
split()создаёт и возвращает новый экземпляр SplittableRandom, не имеющий общего изменяемого состояния с текущим экземпляром. Однако с очень высокой вероятностью значения, сгенерированные обоими объектами в совокупности, обладают теми же статистическими свойствами, что и такое же количество значений, сгенерированное одним потоком с использованием одного объектаSplittableRandom. - Экземпляры SplittableRandom не являются потокобезопасными. Они предназначены для разделения между потоками, а не для совместного использования. Например, вычисление
fork/join-style, использующее случайные числа, может включать конструкцию видаnew Subtask(aSplittableRandom.split()).fork(). - Этот класс предоставляет дополнительные методы для создания потоков случайных значений, использующие описанные выше методы при работе в режиме
stream.parallel().
Экземпляры SplittableRandom не являются криптографически стойкими. В приложениях, чувствительных к безопасности, рекомендуется использовать SecureRandom. Кроме того, экземпляры, созданные конструктором по умолчанию, не используют криптографически случайное начальное значение, если системное свойство java.util.secureRandomSeed не установлено в true.
- Начиная с версии:
- 1.8
Краткое описание вложенных классов
Вложенные классы/интерфейсы, объявленные в интерфейсе RandomGenerator
RandomGenerator.ArbitrarilyJumpableGenerator, RandomGenerator.JumpableGenerator, RandomGenerator.LeapableGenerator, RandomGenerator.SplittableGenerator, RandomGenerator.StreamableGenerator | Модификатор и тип | Интерфейс | Описание |
|---|---|---|
static interface |
RandomGenerator.ArbitrarilyJumpableGenerator |
Этот интерфейс предназначен для определения общего протокола объектов, генерирующих последовательности псевдослучайных значений и способных легко перескакивать вперёд на произвольное расстояние к удалённой точке цикла состояния. |
static interface |
RandomGenerator.JumpableGenerator |
Этот интерфейс предназначен для определения общего протокола объектов, генерирующих псевдослучайные значения и способных легко перескакивать вперёд на умеренное расстояние (например, 264) к удалённой точке цикла состояния. |
static interface |
RandomGenerator.LeapableGenerator |
Этот интерфейс предназначен для определения общего протокола объектов, генерирующих последовательности псевдослучайных значений и способных не только перескакивать, но и перелетать вперёд на большое расстояние (например, 2128) к очень удалённой точке цикла состояния. |
static interface |
RandomGenerator.SplittableGenerator |
Этот интерфейс предназначен для определения общего протокола объектов, генерирующих последовательности псевдослучайных значений и допускающих разделение на два объекта (исходный и новый), каждый из которых следует тому же протоколу (и поэтому может рекурсивно разделяться без ограничений). |
static interface |
RandomGenerator.StreamableGenerator |
Интерфейс RandomGenerator.StreamableGenerator расширяет интерфейс RandomGenerator, предоставляя методы, возвращающие потоки объектов RandomGenerator. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
SplittableRandom() |
Создаёт новый экземпляр SplittableRandom, который, вероятно, будет генерировать последовательности значений, статистически независимые от последовательностей других экземпляров в текущей программе; кроме того, последовательности могут и обычно будут различаться при разных запусках программы. |
SplittableRandom |
Создаёт новый экземпляр SplittableRandom с указанным начальным значением. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
DoubleStream |
doubles() |
Возвращает практически неограниченный поток псевдослучайных значений
double от этого генератора и/или генератора, полученного его разделением; каждое значение находится в диапазоне от нуля (включительно) до единицы (не включая её). |
DoubleStream |
doubles |
Возвращает практически неограниченный поток псевдослучайных значений
double от этого генератора и/или генератора, полученного его разделением; каждое значение соответствует заданной нижней границе (включительно) и верхней границе (не включая её). |
DoubleStream |
doubles |
Возвращает поток, генерирующий заданное число streamSize псевдослучайных значений double от этого генератора и/или генератора, полученного его разделением; каждое значение находится в диапазоне от нуля (включительно) до единицы (не включая её). |
DoubleStream |
doubles |
Возвращает поток, генерирующий заданное число streamSize псевдослучайных значений double от этого генератора и/или генератора, полученного его разделением; каждое значение соответствует заданной нижней границе (включительно) и верхней границе (не включая её). |
IntStream |
ints() |
Возвращает практически неограниченный поток псевдослучайных значений int от этого генератора и/или генератора, полученного его разделением. |
IntStream |
ints |
Возвращает практически неограниченный поток псевдослучайных значений
int от этого генератора и/или генератора, полученного его разделением; каждое значение соответствует заданной нижней границе (включительно) и верхней границе (не включая её). |
IntStream |
ints |
Возвращает поток, генерирующий заданное число streamSize псевдослучайных значений int от этого генератора и/или генератора, полученного его разделением. |
IntStream |
ints |
Возвращает поток, генерирующий заданное число streamSize псевдослучайных значений int от этого генератора и/или генератора, полученного его разделением; каждое значение соответствует заданной нижней границе (включительно) и верхней границе (не включая её). |
LongStream |
longs() |
Возвращает практически неограниченный поток псевдослучайных значений
long от этого генератора и/или генератора, полученного его разделением. |
LongStream |
longs |
Возвращает поток, генерирующий заданное число streamSize псевдослучайных значений long от этого генератора и/или генератора, полученного его разделением. |
LongStream |
longs |
Возвращает практически неограниченный поток псевдослучайных значений
long от этого генератора и/или генератора, полученного его разделением; каждое значение соответствует заданной нижней границе (включительно) и верхней границе (не включая её). |
LongStream |
longs |
Возвращает поток, генерирующий заданное число streamSize псевдослучайных значений long от этого генератора и/или генератора, полученного его разделением; каждое значение соответствует заданной нижней границе (включительно) и верхней границе (не включая её). |
void |
nextBytes |
Заполняет предоставленный пользователем массив байтов сгенерированными байтовыми значениями, равномерно выбранными псевдослучайным образом из диапазона от -128 (включительно) до 127 (включительно). |
long |
nextLong() |
Возвращает псевдослучайно выбранное значение long. |
SplittableRandom |
split() |
Создаёт и возвращает новый экземпляр SplittableRandom, не имеющий общего изменяемого состояния с этим экземпляром. |
SplittableRandom |
split |
Возвращает новый генератор псевдослучайных чисел, отделённый от этого генератора и реализующий интерфейсы RandomGenerator и RandomGenerator.SplittableGenerator. |
Stream |
splits() |
Возвращает практически неограниченный поток новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator.SplittableGenerator. |
Stream |
splits |
Возвращает поток, генерирующий заданное число streamSize новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator.SplittableGenerator. |
Stream |
splits |
Возвращает поток, генерирующий заданное число streamSize новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator.SplittableGenerator. |
Stream |
splits |
Возвращает практически неограниченный поток новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator.SplittableGenerator. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Показывает, равен ли какой-либо другой объект этому объекту. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии. Финализация объявлена устаревшей и будет удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
Методы, объявленные в интерфейсе RandomGenerator
equiDoubles, isDeprecated, nextBoolean, nextDouble, nextDouble, nextDouble, nextExponential, nextFloat, nextFloat, nextFloat, nextGaussian, nextGaussian, nextInt, nextInt, nextInt, nextLong, nextLong | Модификатор и тип | Метод | Описание |
|---|---|---|
default DoubleStream |
equiDoubles |
Возвращает практически неограниченный поток псевдослучайно выбранных значений double, каждое из которых находится между указанной нижней границей left и указанной верхней границей right. |
default boolean |
isDeprecated() |
Возвращает true, если реализация RandomGenerator (алгоритм) помечена как устаревшая. |
default boolean |
nextBoolean() |
Возвращает псевдослучайно выбранное значение boolean. |
default double |
nextDouble() |
Возвращает псевдослучайное значение double в диапазоне от нуля (включительно) до единицы (не включая её). |
default double |
nextDouble |
Возвращает псевдослучайно выбранное значение double в диапазоне от нуля (включительно) до указанной верхней границы (не включая её). |
default double |
nextDouble |
Возвращает псевдослучайно выбранное значение double в диапазоне от указанной нижней границы (включительно) до указанной верхней границы (не включая её). |
default double |
nextExponential() |
Возвращает неотрицательное значение double, псевдослучайно выбранное из экспоненциального распределения со средним значением 1. |
default float |
nextFloat() |
Возвращает псевдослучайное значение float в диапазоне от нуля (включительно) до единицы (не включая её). |
default float |
nextFloat |
Возвращает псевдослучайно выбранное значение float в диапазоне от нуля (включительно) до указанной верхней границы (не включая её). |
default float |
nextFloat |
Возвращает псевдослучайно выбранное значение float в диапазоне от указанной нижней границы (включительно) до указанной верхней границы (не включая её). |
default double |
nextGaussian() |
Возвращает значение double, псевдослучайно выбранное из гауссовского (нормального) распределения со средним значением 0 и стандартным отклонением 1. |
default double |
nextGaussian |
Возвращает значение double, псевдослучайно выбранное из гауссовского (нормального) распределения со средним значением и стандартным отклонением, заданными аргументами. |
default int |
nextInt() |
Возвращает псевдослучайно выбранное значение int. |
default int |
nextInt |
Возвращает псевдослучайно выбранное значение int в диапазоне от нуля (включительно) до указанной верхней границы (не включая её). |
default int |
nextInt |
Возвращает псевдослучайно выбранное значение int в диапазоне от указанной нижней границы (включительно) до указанной верхней границы (не включая её). |
default long |
nextLong |
Возвращает псевдослучайно выбранное значение long в диапазоне от нуля (включительно) до указанной верхней границы (не включая её). |
default long |
nextLong |
Возвращает псевдослучайно выбранное значение long в диапазоне от указанной нижней границы (включительно) до указанной верхней границы (не включая её). |
Методы, объявленные в интерфейсе RandomGenerator.SplittableGenerator
rngs, rngs | Модификатор и тип | Метод | Описание |
|---|---|---|
default Stream |
rngs() |
Возвращает практически неограниченный поток новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator. |
default Stream |
rngs |
Возвращает поток, генерирующий заданное число streamSize новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator. |
Подробное описание конструкторов
SplittableRandom
public SplittableRandom(long seed)
- Параметры:
-
seed— начальное значение seed
SplittableRandom
public SplittableRandom()
Подробное описание методов
split
public SplittableRandom split()
split(); те же ожидаемые статистические свойства применимы ко всему набору генераторов, созданных в результате такого рекурсивного разделения.- Указано в:
-
splitв интерфейсеRandomGenerator.SplittableGenerator - Возвращает:
- новый экземпляр SplittableRandom
split
public SplittableRandom split(RandomGenerator.SplittableGenerator source)
RandomGenerator и RandomGenerator.SplittableGenerator.- Указано в:
-
splitв интерфейсеRandomGenerator.SplittableGenerator - Параметры:
-
source— экземплярRandomGenerator.SplittableGenerator, который будет использоваться вместо этого экземпляра в качестве источника псевдослучайных битов для инициализации состояния новых генераторов. - Возвращает:
- объект, реализующий интерфейсы
RandomGeneratorиRandomGenerator.SplittableGenerator - Исключения:
-
NullPointerException— если source равен null - С версии:
- 17
nextLong
public long nextLong()
RandomGeneratorlong.- Указано в:
-
nextLongв интерфейсеRandomGenerator - Возвращает:
- выбранное псевдослучайным образом значение
long
nextBytes
public void nextBytes(byte[] bytes)
- Указано в:
-
nextBytesв интерфейсеRandomGenerator - Параметры:
-
bytes— байтовый массив для заполнения псевдослучайными байтами - Исключения:
-
NullPointerException— если bytes равен null - С версии:
- 10
splits
public Stream<RandomGenerator.SplittableGenerator> splits()
RandomGenerator.SplittableGenerator. Этот генератор псевдослучайных чисел можно использовать как источник псевдослучайных битов для инициализации состояния новых генераторов.
- Указано в:
-
splitsв интерфейсеRandomGenerator.SplittableGenerator - Требования к реализации:
- Реализация по умолчанию вызывает
splits(this). - Возвращает:
- поток объектов
RandomGenerator.SplittableGenerator - С версии:
- 17
splits
public Stream<RandomGenerator.SplittableGenerator> splits(long streamSize)
streamSize новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator.SplittableGenerator. Этот генератор псевдослучайных чисел можно использовать как источник псевдослучайных битов для инициализации состояния новых генераторов.
- Указано в:
-
splitsв интерфейсеRandomGenerator.SplittableGenerator - Требования к реализации:
- Параметры:
-
streamSize— количество генерируемых значений - Возвращает:
- поток объектов
RandomGenerator.SplittableGenerator - Исключения:
-
IllegalArgumentException— еслиstreamSizeменьше нуля - С версии:
- 17
splits
public Stream<RandomGenerator.SplittableGenerator> splits(RandomGenerator.SplittableGenerator source)
RandomGenerator.SplittableGenerator.- Указано в:
-
splitsв интерфейсеRandomGenerator.SplittableGenerator - Требования к реализации:
- Параметры:
-
source— экземплярRandomGenerator.SplittableGenerator, который будет использоваться вместо этого экземпляра в качестве источника псевдослучайных битов для инициализации состояния новых генераторов. - Возвращает:
- поток объектов
RandomGenerator.SplittableGenerator - Исключения:
-
NullPointerException— если source равен null - С версии:
- 17
splits
public Stream<RandomGenerator.SplittableGenerator> splits(long streamSize, RandomGenerator.SplittableGenerator source)
streamSize новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator.SplittableGenerator.- Указано в:
-
splitsв интерфейсеRandomGenerator.SplittableGenerator - Требования к реализации:
- Параметры:
-
streamSize— количество генерируемых значений -
source— экземплярRandomGenerator.SplittableGenerator, который будет использоваться вместо этого экземпляра в качестве источника псевдослучайных битов для инициализации состояния новых генераторов. - Возвращает:
- поток объектов
RandomGenerator.SplittableGenerator - Исключения:
-
NullPointerException— если source равен null -
IllegalArgumentException— еслиstreamSizeменьше нуля - С версии:
- 17
ints
public IntStream ints(long streamSize)
streamSize псевдослучайных значений int из этого генератора и/или одного из разделенных от него генераторов.- Указано в:
-
intsв интерфейсеRandomGenerator - Параметры:
-
streamSize— количество генерируемых значений - Возвращает:
- поток псевдослучайных значений
int - Исключения:
-
IllegalArgumentException— еслиstreamSizeменьше нуля
ints
public IntStream ints()
int из этого генератора и/или одного из разделенных от него генераторов.- Указано в:
-
intsв интерфейсеRandomGenerator - Примечание по реализации:
- Этот метод реализован так, чтобы быть эквивалентным
ints(Long.MAX_VALUE). - Возвращает:
- поток псевдослучайных значений
int
ints
public IntStream ints(long streamSize, int randomNumberOrigin, int randomNumberBound)
streamSize псевдослучайных значений int из этого генератора и/или одного из разделенных от него генераторов; каждое значение соответствует заданному начальному значению (включительно) и верхней границе (не включительно).- Указано в:
-
intsв интерфейсеRandomGenerator - Параметры:
-
streamSize— количество генерируемых значений -
randomNumberOrigin— начальное значение каждого случайного значения (включительно) -
randomNumberBound— верхняя граница каждого случайного значения (не включительно) - Возвращает:
- поток псевдослучайных значений
int, каждое из которых соответствует заданному начальному значению (включительно) и верхней границе (не включительно) - Исключения:
-
IllegalArgumentException— еслиstreamSizeменьше нуля илиrandomNumberOriginбольше или равноrandomNumberBound
ints
public IntStream ints(int randomNumberOrigin, int randomNumberBound)
int из этого генератора и/или одного из разделенных от него генераторов; каждое значение соответствует заданному начальному значению (включительно) и верхней границе (не включительно).- Указано в:
-
intsв интерфейсеRandomGenerator - Примечание по реализации:
- Этот метод реализован так, чтобы быть эквивалентным
ints(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound). - Параметры:
-
randomNumberOrigin— начальное значение каждого случайного значения (включительно) -
randomNumberBound— верхняя граница каждого случайного значения (не включительно) - Возвращает:
- поток псевдослучайных значений
int, каждое из которых соответствует заданному начальному значению (включительно) и верхней границе (не включительно) - Исключения:
-
IllegalArgumentException— еслиrandomNumberOriginбольше или равноrandomNumberBound
longs
public LongStream longs(long streamSize)
streamSize псевдослучайных значений long из этого генератора и/или одного из разделенных от него генераторов.- Указано в:
-
longsв интерфейсеRandomGenerator - Параметры:
-
streamSize— количество генерируемых значений - Возвращает:
- поток псевдослучайных значений
long - Исключения:
-
IllegalArgumentException— еслиstreamSizeменьше нуля
longs
public LongStream longs()
long из этого генератора и/или одного из разделенных от него генераторов.- Указано в:
-
longsв интерфейсеRandomGenerator - Примечание по реализации:
- Этот метод реализован так, чтобы быть эквивалентным
longs(Long.MAX_VALUE). - Возвращает:
- поток псевдослучайных значений
long
longs
public LongStream longs(long streamSize, long randomNumberOrigin, long randomNumberBound)
streamSize псевдослучайных значений long из этого генератора и/или одного из разделенных от него генераторов; каждое значение соответствует заданному начальному значению (включительно) и верхней границе (не включительно).- Указано в:
-
longsв интерфейсеRandomGenerator - Параметры:
-
streamSize— количество генерируемых значений -
randomNumberOrigin— начальное значение каждого случайного значения (включительно) -
randomNumberBound— верхняя граница каждого случайного значения (не включительно) - Возвращает:
- поток псевдослучайных значений
long, каждое из которых соответствует заданному начальному значению (включительно) и верхней границе (не включительно) - Исключения:
-
IllegalArgumentException— еслиstreamSizeменьше нуля илиrandomNumberOriginбольше или равноrandomNumberBound
longs
public LongStream longs(long randomNumberOrigin, long randomNumberBound)
long из этого генератора и/или одного из разделенных от него генераторов; каждое значение соответствует заданному начальному значению (включительно) и верхней границе (не включительно).- Указано в:
-
longsв интерфейсеRandomGenerator - Примечание по реализации:
- Этот метод реализован так, чтобы быть эквивалентным
longs(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound). - Параметры:
-
randomNumberOrigin— начальное значение каждого случайного значения (включительно) -
randomNumberBound— верхняя граница каждого случайного значения (не включительно) - Возвращает:
- поток псевдослучайных значений
long, каждое из которых соответствует заданному начальному значению (включительно) и верхней границе (не включительно) - Исключения:
-
IllegalArgumentException— еслиrandomNumberOriginбольше или равноrandomNumberBound
doubles
public DoubleStream doubles(long streamSize)
streamSize псевдослучайных значений double из этого генератора и/или одного из разделенных от него генераторов; каждое значение находится в диапазоне от нуля (включительно) до единицы (не включительно).- Указано в:
-
doublesв интерфейсеRandomGenerator - Параметры:
-
streamSize— количество генерируемых значений - Возвращает:
- поток значений
double - Исключения:
-
IllegalArgumentException— еслиstreamSizeменьше нуля
doubles
public DoubleStream doubles()
double из этого генератора и/или одного из разделенных от него генераторов; каждое значение находится в диапазоне от нуля (включительно) до единицы (не включительно).- Указано в:
-
doublesв интерфейсеRandomGenerator - Примечание по реализации:
- Этот метод реализован так, чтобы быть эквивалентным
doubles(Long.MAX_VALUE). - Возвращает:
- поток псевдослучайных значений
double
doubles
public DoubleStream doubles(long streamSize, double randomNumberOrigin, double randomNumberBound)
streamSize псевдослучайных значений double из этого генератора и/или одного из разделенных от него генераторов; каждое значение соответствует заданному начальному значению (включительно) и верхней границе (не включительно).- Указано в:
-
doublesв интерфейсеRandomGenerator - Параметры:
-
streamSize— количество генерируемых значений -
randomNumberOrigin— начальное значение каждого случайного значения (включительно) -
randomNumberBound— верхняя граница каждого случайного значения (не включительно) - Возвращает:
- поток псевдослучайных значений
double, каждое из которых соответствует заданному начальному значению (включительно) и верхней границе (не включительно) - Исключения:
-
IllegalArgumentException— еслиstreamSizeменьше нуля, илиrandomNumberOriginне является конечным числом, илиrandomNumberBoundне является конечным числом, илиrandomNumberOriginбольше или равноrandomNumberBound
doubles
public DoubleStream doubles(double randomNumberOrigin, double randomNumberBound)
double из этого генератора и/или одного из разделенных от него генераторов; каждое значение соответствует заданному начальному значению (включительно) и верхней границе (не включительно).- Указано в:
-
doublesв интерфейсеRandomGenerator - Примечание по реализации:
- Этот метод реализован так, чтобы быть эквивалентным
doubles(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound). - Параметры:
-
randomNumberOrigin— начальное значение каждого случайного значения (включительно) -
randomNumberBound— верхняя граница каждого случайного значения (не включительно) - Возвращает:
- поток псевдослучайных значений
double, каждое из которых соответствует заданному начальному значению (включительно) и верхней границе (не включительно) - Исключения:
-
IllegalArgumentException— еслиrandomNumberOriginне является конечным числом, илиrandomNumberBoundне является конечным числом, илиrandomNumberOriginбольше или равноrandomNumberBound
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.