Класс 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
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
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
Методы, объявленные в интерфейсе 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)
- Параметры:
-
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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/SplittableRandom.html