Класс SplittableRandom
- java.lang.Object
-
- java.util.SplittableRandom
public final class SplittableRandom extends Object
Генератор равномерно распределённых псевдослучайных значений, применимый (помимо прочего) в изолированных параллельных вычислениях, которые могут генерировать подзадачи. Класс 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. Кроме того, экземпляры, созданные по умолчанию, не используют криптографически случайное начальное значение, если системное свойство system property java.util.secureRandomSeed не установлено в true.
- С момента:
- 1.8
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
SplittableRandom() | Создаёт новый экземпляр SplittableRandom, который, вероятно, будет генерировать последовательности значений, статистически независимые от последовательностей любых других экземпляров в текущей программе; и может, и обычно изменяется между вызовами программы. |
SplittableRandom(long seed) | Создаёт новый экземпляр SplittableRandom, используя указанное начальное значение. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
DoubleStream | doubles() | Возвращает эффективно неограниченный поток псевдослучайных значений |
DoubleStream | doubles(double randomNumberOrigin,
double randomNumberBound) | Возвращает эффективно неограниченный поток псевдослучайных значений |
DoubleStream | doubles(long streamSize) | Возвращает поток, создающий заданное количество |
DoubleStream | doubles(long streamSize,
double randomNumberOrigin,
double randomNumberBound) | Возвращает поток, создающий заданное количество |
IntStream | ints() | Возвращает эффективно неограниченный поток псевдослучайных значений |
IntStream | ints(int randomNumberOrigin,
int randomNumberBound) | Возвращает эффективно неограниченный поток псевдослучайных значений |
IntStream | ints(long streamSize) | Возвращает поток, создающий заданное количество |
IntStream | ints(long streamSize,
int randomNumberOrigin,
int randomNumberBound) | Возвращает поток, создающий заданное количество |
LongStream | longs() | Возвращает эффективно неограниченный поток псевдослучайных значений |
LongStream | longs(long streamSize) | Возвращает поток, создающий заданное количество |
LongStream | longs(long randomNumberOrigin,
long randomNumberBound) | Возвращает эффективно неограниченный поток псевдослучайных значений |
LongStream | longs(long streamSize,
long randomNumberOrigin,
long randomNumberBound) | Возвращает поток, создающий заданное количество |
boolean | nextBoolean() | Возвращает псевдослучайное значение |
void | nextBytes(byte[] bytes) | Заполняет предоставленный пользователем массив байтов сгенерированными псевдослучайными байтами. |
double | nextDouble() | Возвращает псевдослучайное значение |
double | nextDouble(double bound) | Возвращает псевдослучайное значение |
double | nextDouble(double origin,
double bound) | Возвращает псевдослучайное значение |
int | nextInt() | Возвращает псевдослучайное значение |
int | nextInt(int bound) | Возвращает псевдослучайное значение |
int | nextInt(int origin,
int bound) | Возвращает псевдослучайное значение |
long | nextLong() | Возвращает псевдослучайное значение |
long | nextLong(long bound) | Возвращает псевдослучайное значение |
long | nextLong(long origin,
long bound) | Возвращает псевдослучайное значение |
SplittableRandom | split() | Создаёт и возвращает новый экземпляр SplittableRandom, который не имеет общего изменяемого состояния с этим экземпляром. |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Подробное описание конструкторов
SplittableRandom
public SplittableRandom(long seed)
Создаёт новый экземпляр SplittableRandom, используя указанное начальное значение. Экземпляры SplittableRandom, созданные с одинаковым начальным значением в одной и той же программе, генерируют идентичные последовательности значений.
- Параметры:
-
seed- начальное значение
SplittableRandom
public SplittableRandom()
Создаёт новый экземпляр SplittableRandom, который, вероятно, будет генерировать последовательности значений, статистически независимые от последовательностей любых других экземпляров в текущей программе; и может, и обычно изменяется между вызовами программы.
Методы
split
public SplittableRandom split()
Создает и возвращает новый экземпляр SplittableRandom, который не имеет общего изменяемого состояния с этим экземпляром. Однако, с очень высокой вероятностью, множество значений, генерируемых совместно двумя объектами, обладает теми же статистическими свойствами, как если бы то же количество значений генерировалось одним потоком с использованием одного объекта SplittableRandom. Любой или оба из двух объектов могут быть дополнительно разделены с использованием метода split(), и те же ожидаемые статистические свойства применяются ко всему множеству генераторов, созданных таким рекурсивным разделением.
- Возвращает:
- новый экземпляр SplittableRandom
nextBytes
public void nextBytes(byte[] bytes)
Заполняет предоставленный пользователем массив байтов сгенерированными псевдослучайными байтами.
- Параметры:
-
bytes- массив байтов для заполнения псевдослучайными байтами - Исключения:
-
NullPointerException- если bytes имеет значение null - С версии:
- 10
nextInt
public int nextInt()
Возвращает псевдослучайное int значение.
- Возвращает:
- псевдослучайное
intзначение
nextInt
public int nextInt(int bound)
Возвращает псевдослучайное int значение от нуля (включительно) до указанной границы (исключительно).
- Параметры:
-
bound- верхняя граница (исключительно). Должно быть положительным. - Возвращает:
- псевдослучайное
intзначение от нуля (включительно) до границы (исключительно) - Исключения:
-
IllegalArgumentException- еслиboundне является положительным
nextInt
public int nextInt(int origin,
int bound) Возвращает псевдослучайное int значение между указанным началом (включительно) и указанной границей (исключительно).
- Параметры:
-
origin- наименьшее возвращаемое значение -
bound- верхняя граница (исключительно) - Возвращает:
- псевдослучайное
intзначение между началом (включительно) и границей (исключительно) - Исключения:
-
IllegalArgumentException- еслиoriginбольше или равноbound
nextLong
public long nextLong()
Возвращает псевдослучайное long значение.
- Возвращает:
- псевдослучайное
longзначение
nextLong
public long nextLong(long bound)
Возвращает псевдослучайное long значение между нулем (включительно) и указанной границей (исключительно).
- Параметры:
-
bound- верхняя граница (исключительно). Должно быть положительным. - Возвращает:
- псевдослучайное
longзначение между нулем (включительно) и границей (исключительно) - Исключения:
-
IllegalArgumentException- еслиboundне является положительным
nextLong
public long nextLong(long origin,
long bound) Возвращает псевдослучайное long значение между указанным началом (включительно) и указанной границей (исключительно).
- Параметры:
-
origin- наименьшее возвращаемое значение -
bound- верхняя граница (исключительно) - Возвращает:
- псевдослучайное
longзначение между началом (включительно) и границей (исключительно) - Исключения:
-
IllegalArgumentException- еслиoriginбольше или равноbound
nextDouble
public double nextDouble()
Возвращает псевдослучайное double значение между нулем (включительно) и единицей (исключительно).
- Возвращает:
- псевдослучайное
doubleзначение между нулем (включительно) и единицей (исключительно)
nextDouble
public double nextDouble(double bound)
Возвращает псевдослучайное double значение между 0.0 (включительно) и указанной границей (исключительно).
- Параметры:
-
bound- верхняя граница (исключительно). Должно быть положительным. - Возвращает:
- псевдослучайное
doubleзначение между нулем (включительно) и границей (исключительно) - Исключения:
-
IllegalArgumentException- еслиboundне является положительным
nextDouble
public double nextDouble(double origin,
double bound) Возвращает псевдослучайное double значение между указанным началом (включительно) и границей (исключительно).
- Параметры:
-
origin- наименьшее возвращаемое значение -
bound- верхняя граница (исключительно) - Возвращает:
- псевдослучайное
doubleзначение между началом (включительно) и границей (исключительно) - Исключения:
-
IllegalArgumentException- еслиoriginбольше или равноbound
nextBoolean
public boolean nextBoolean()
Возвращает псевдослучайное boolean значение.
- Возвращает:
- псевдослучайное
booleanзначение
ints
public IntStream ints(long streamSize)
Возвращает поток, генерирующий указанное streamSize количество псевдослучайных int значений из этого генератора и/или одного, разделенного от него.
- Параметры:
-
streamSize- количество значений для генерации - Возвращает:
- поток псевдослучайных
intзначений - Исключения:
-
IllegalArgumentException- еслиstreamSizeменьше нуля
ints
public IntStream ints()
Возвращает эффективно неограниченный поток псевдослучайных int значений из этого генератора и/или одного, разделенного от него.
- Примечание по реализации:
- Этот метод реализован как эквивалент
ints(Long.MAX_VALUE). - Возвращает:
- поток псевдослучайных
intзначений
ints
public IntStream ints(long streamSize,
int randomNumberOrigin,
int randomNumberBound) Возвращает поток, генерирующий указанное streamSize количество псевдослучайных int значений из этого генератора и/или одного, разделенного от него; каждое значение соответствует заданному началу (включительно) и границе (исключительно).
- Параметры:
-
streamSize- количество значений для генерации -
randomNumberOrigin- начало (включительно) каждого случайного значения -
randomNumberBound- граница (исключительно) каждого случайного значения - Возвращает:
- поток псевдослучайных
intзначений, каждое с заданным началом (включительно) и границей (исключительно) - Исключения:
-
IllegalArgumentException- еслиstreamSizeменьше нуля, илиrandomNumberOriginбольше или равноrandomNumberBound
ints
public IntStream ints(int randomNumberOrigin,
int randomNumberBound) Возвращает эффективно неограниченный поток псевдослучайных
int значений из этого генератора и/или одного, разделенного от него; каждое значение соответствует заданному началу (включительно) и границе (исключительно).
- Примечание по реализации:
- Этот метод реализован как эквивалент
ints(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound). - Параметры:
-
randomNumberOrigin- начало (включительно) каждого случайного значения -
randomNumberBound- граница (исключительно) каждого случайного значения - Возвращает:
- поток псевдослучайных
intзначений, каждое с заданным началом (включительно) и границей (исключительно) - Исключения:
-
IllegalArgumentException- еслиrandomNumberOriginбольше или равноrandomNumberBound
longs
public LongStream longs(long streamSize)
Возвращает поток, генерирующий указанное streamSize количество псевдослучайных long значений из этого генератора и/или одного, разделенного от него.
- Параметры:
-
streamSize- количество значений для генерации - Возвращает:
- поток псевдослучайных
longзначений - Исключения:
-
IllegalArgumentException- еслиstreamSizeменьше нуля
longs
public LongStream longs()
Возвращает эффективно неограниченный поток псевдослучайных
long значений из этого генератора и/или одного, разделенного от него.
- Примечание по реализации:
- Этот метод реализован как эквивалент
longs(Long.MAX_VALUE). - Возвращает:
- поток псевдослучайных
longзначений
longs
public LongStream longs(long streamSize,
long randomNumberOrigin,
long randomNumberBound) Возвращает поток, генерирующий указанное streamSize количество псевдослучайных long значений из этого генератора и/или одного, разделенного от него; каждое значение соответствует заданному началу (включительно) и границе (исключительно).
- Параметры:
-
streamSize- количество значений для генерации -
randomNumberOrigin- начало (включительно) каждого случайного значения -
randomNumberBound- граница (исключительно) каждого случайного значения - Возвращает:
- поток псевдослучайных
longзначений, каждое с заданным началом (включительно) и границей (исключительно) - Исключения:
-
IllegalArgumentException- еслиstreamSizeменьше нуля, илиrandomNumberOriginбольше или равноrandomNumberBound
longs
public LongStream longs(long randomNumberOrigin,
long randomNumberBound) Возвращает эффективно неограниченный поток псевдослучайных
long значений из этого генератора и/или одного, разделенного от него; каждое значение соответствует заданному началу (включительно) и границе (исключительно).
- Примечание по реализации:
- Этот метод реализован как эквивалент
longs(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound). - Параметры:
-
randomNumberOrigin- начало (включительно) каждого случайного значения -
randomNumberBound- граница (исключительно) каждого случайного значения - Возвращает:
- поток псевдослучайных
longзначений, каждое с заданным началом (включительно) и границей (исключительно) - Исключения:
-
IllegalArgumentException- еслиrandomNumberOriginбольше или равноrandomNumberBound
doubles
public DoubleStream doubles(long streamSize)
Возвращает поток, генерирующий указанное streamSize количество псевдослучайных double значений из этого генератора и/или одного, разделенного от него; каждое значение находится между нулем (включительно) и единицей (исключительно).
- Параметры:
-
streamSize- количество значений для генерации - Возвращает:
- поток
doubleзначений - Исключения:
-
IllegalArgumentException- еслиstreamSizeменьше нуля
doubles
public DoubleStream doubles()
Возвращает эффективно неограниченный поток псевдослучайных
double значений из этого генератора и/или одного, разделенного от него; каждое значение находится между нулем (включительно) и единицей (исключительно).
- Примечание о реализации:
- Этот метод реализован так, чтобы быть эквивалентным
doubles(Long.MAX_VALUE). - Возвращает:
- поток псевдослучайных
doubleзначений
doubles
public DoubleStream doubles(long streamSize,
double randomNumberOrigin,
double randomNumberBound) Возвращает поток, генерирующий заданное количество streamSize псевдослучайных double значений из этого генератора и/или одного разветвленного от него; каждое значение соответствует заданному началу (включительно) и границе (исключительно).
- Параметры:
-
streamSize- количество генерируемых значений -
randomNumberOrigin- начало (включительно) каждого случайного значения -
randomNumberBound- граница (исключительно) каждого случайного значения - Возвращает:
- поток псевдослучайных
doubleзначений, каждое с заданным началом (включительно) и границей (исключительно) - Исключения:
-
IllegalArgumentException- еслиstreamSizeменьше нуля илиrandomNumberOriginбольше или равноrandomNumberBound
doubles
public DoubleStream doubles(double randomNumberOrigin,
double randomNumberBound) Возвращает эффективно неограниченный поток псевдослучайных
double значений из этого генератора и/или одного разветвленного от него; каждое значение соответствует заданному началу (включительно) и границе (исключительно).
- Примечание о реализации:
- Этот метод реализован так, чтобы быть эквивалентным
doubles(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound). - Параметры:
-
randomNumberOrigin- начало (включительно) каждого случайного значения -
randomNumberBound- граница (исключительно) каждого случайного значения - Возвращает:
- поток псевдослучайных
doubleзначений, каждое с заданным началом (включительно) и границей (исключительно) - Исключения:
-
IllegalArgumentException- еслиrandomNumberOriginбольше или равноrandomNumberBound
© 1993, 2020, 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/11/docs/api/java.base/java/util/SplittableRandom.html