Spec-Zone.ru › OpenJDK 25

Класс SplittableRandom

java.lang.Object
java.util.SplittableRandom
Все реализуемые интерфейсы:
RandomGenerator, RandomGenerator.SplittableGenerator, RandomGenerator.StreamableGenerator
public final class SplittableRandom extends Object implements RandomGenerator, RandomGenerator.SplittableGenerator
Генератор равномерно распределённых псевдослучайных значений (с периодом 264), пригодный для использования, помимо прочего, в изолированных параллельных вычислениях, которые могут порождать подзадачи. Класс 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

Краткое описание конструкторов

Конструктор Описание
SplittableRandom()
Создаёт новый экземпляр SplittableRandom, который, вероятно, будет генерировать последовательности значений, статистически независимые от последовательностей любых других экземпляров в текущей программе; кроме того, начальное значение может и обычно будет меняться при каждом запуске программы.
SplittableRandom(long seed)
Создаёт новый экземпляр SplittableRandom с указанным начальным значением.

Краткое описание методов

Модификатор и тип Метод Описание
DoubleStream doubles()
Возвращает практически неограниченный поток псевдослучайных значений double от этого генератора и/или от одного генератора, полученного его разделением; каждое значение находится в диапазоне от нуля (включительно) до единицы (не включительно).
DoubleStream doubles(double randomNumberOrigin, double randomNumberBound)
Возвращает практически неограниченный поток псевдослучайных значений double от этого генератора и/или от одного генератора, полученного его разделением; каждое значение соответствует заданным началу диапазона (включительно) и верхней границе (не включительно).
DoubleStream doubles(long streamSize)
Возвращает поток, создающий указанное количество streamSize псевдослучайных значений double от этого генератора и/или от одного генератора, полученного его разделением; каждое значение находится в диапазоне от нуля (включительно) до единицы (не включительно).
DoubleStream doubles(long streamSize, double randomNumberOrigin, double randomNumberBound)
Возвращает поток, создающий указанное количество streamSize псевдослучайных значений double от этого генератора и/или от одного генератора, полученного его разделением; каждое значение соответствует заданным началу диапазона (включительно) и верхней границе (не включительно).
IntStream ints()
Возвращает практически неограниченный поток псевдослучайных значений int от этого генератора и/или от одного генератора, полученного его разделением.
IntStream ints(int randomNumberOrigin, int randomNumberBound)
Возвращает практически неограниченный поток псевдослучайных значений int от этого генератора и/или от одного генератора, полученного его разделением; каждое значение соответствует заданным началу диапазона (включительно) и верхней границе (не включительно).
IntStream ints(long streamSize)
Возвращает поток, создающий указанное количество streamSize псевдослучайных значений int от этого генератора и/или от одного генератора, полученного его разделением.
IntStream ints(long streamSize, int randomNumberOrigin, int randomNumberBound)
Возвращает поток, создающий указанное количество streamSize псевдослучайных значений int от этого генератора и/или от одного генератора, полученного его разделением; каждое значение соответствует заданным началу диапазона (включительно) и верхней границе (не включительно).
LongStream longs()
Возвращает практически неограниченный поток псевдослучайных значений long от этого генератора и/или от одного генератора, полученного его разделением.
LongStream longs(long streamSize)
Возвращает поток, создающий указанное количество streamSize псевдослучайных значений long от этого генератора и/или от одного генератора, полученного его разделением.
LongStream longs(long randomNumberOrigin, long randomNumberBound)
Возвращает практически неограниченный поток псевдослучайных значений long от этого генератора и/или от одного генератора, полученного его разделением; каждое значение соответствует заданным началу диапазона (включительно) и верхней границе (не включительно).
LongStream longs(long streamSize, long randomNumberOrigin, long randomNumberBound)
Возвращает поток, создающий указанное количество streamSize псевдослучайных значений long от этого генератора и/или от одного генератора, полученного его разделением; каждое значение соответствует заданным началу диапазона (включительно) и верхней границе (не включительно).
void nextBytes(byte[] bytes)
Заполняет предоставленный пользователем массив байтов псевдослучайно выбранными равномерно распределёнными сгенерированными значениями байтов в диапазоне от -128 (включительно) до 127 (включительно).
long nextLong()
Возвращает псевдослучайно выбранное значение long.
SplittableRandom split()
Создаёт и возвращает новый экземпляр SplittableRandom, не разделяющий изменяемое состояние с этим экземпляром.
SplittableRandom split(RandomGenerator.SplittableGenerator source)
Возвращает новый генератор псевдослучайных чисел, полученный разделением этого генератора и реализующий интерфейсы RandomGenerator и RandomGenerator.SplittableGenerator.
Stream<RandomGenerator.SplittableGenerator> splits()
Возвращает практически неограниченный поток новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator.SplittableGenerator.
Stream<RandomGenerator.SplittableGenerator> splits(long streamSize)
Возвращает поток, создающий указанное количество streamSize новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator.SplittableGenerator.
Stream<RandomGenerator.SplittableGenerator> splits(long streamSize, RandomGenerator.SplittableGenerator source)
Возвращает поток, создающий указанное количество streamSize новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator.SplittableGenerator.
Stream<RandomGenerator.SplittableGenerator> splits(RandomGenerator.SplittableGenerator source)
Возвращает практически неограниченный поток новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator.SplittableGenerator.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Методы, объявленные в интерфейсе RandomGenerator

equiDoubles, isDeprecated, nextBoolean, nextDouble, nextDouble, nextDouble, nextExponential, nextFloat, nextFloat, nextFloat, nextGaussian, nextGaussian, nextInt, nextInt, nextInt, nextLong, nextLong

Методы, объявленные в интерфейсе RandomGenerator.SplittableGenerator

rngs, rngs

Подробное описание конструкторов

SplittableRandom

public SplittableRandom(long seed)
Создает новый экземпляр SplittableRandom с указанным начальным начальным значением. Экземпляры SplittableRandom, созданные с одинаковым начальным значением в одной и той же программе, генерируют идентичные последовательности значений.
Параметры:
seed — начальное начальное значение

SplittableRandom

public SplittableRandom()
Создает новый экземпляр SplittableRandom, который, вероятно, будет генерировать последовательности значений, статистически независимые от последовательностей любых других экземпляров в текущей программе; кроме того, они могут и обычно будут различаться при каждом запуске программы.

Подробное описание методов

split

public SplittableRandom split()
Создает и возвращает новый экземпляр SplittableRandom, не использующий изменяемое состояние совместно с этим экземпляром. Однако с очень высокой вероятностью набор значений, совместно сгенерированных двумя объектами, обладает теми же статистическими свойствами, что и такое же количество значений, сгенерированных одним потоком с помощью одного объекта SplittableRandom. Один или оба этих объекта можно разделить дополнительно с помощью метода 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()
Описание скопировано из интерфейса: RandomGenerator
Возвращает псевдослучайно выбранное значение long.
Указано в:
nextLong в интерфейсе RandomGenerator
Возвращает:
псевдослучайно выбранное значение long

nextBytes

public void nextBytes(byte[] bytes)
Заполняет предоставленный пользователем массив байтов сгенерированными значениями байтов, псевдослучайно выбранными равномерно из диапазона от -128 (включительно) до 127 (включительно).
Указано в:
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

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания, предназначенные для разработчиков, с концептуальными обзорами, определениями терминов, обходными решениями и примерами работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и правилами распространения документации.

© 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/SplittableRandom.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API