Класс 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()

Возвращает эффективно неограниченный поток псевдослучайных значений 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 из этого генератора и/или одного, разделённого от него; каждое значение соответствует заданному началу (включительно) и границе (исключительно).

boolean nextBoolean()

Возвращает псевдослучайное значение boolean.

void nextBytes​(byte[] bytes)

Заполняет предоставленный пользователем массив байтов сгенерированными псевдослучайными байтами.

double nextDouble()

Возвращает псевдослучайное значение double между нулём (включительно) и единицей (исключительно).

double nextDouble​(double bound)

Возвращает псевдослучайное значение double между 0,0 (включительно) и указанной границей (исключительно).

double nextDouble​(double origin, double bound)

Возвращает псевдослучайное значение double между указанным началом (включительно) и границей (исключительно).

int nextInt()

Возвращает псевдослучайное значение int.

int nextInt​(int bound)

Возвращает псевдослучайное значение int между нулём (включительно) и указанной границей (исключительно).

int nextInt​(int origin, int bound)

Возвращает псевдослучайное значение int между указанным началом (включительно) и указанной границей (исключительно).

long nextLong()

Возвращает псевдослучайное значение long.

long nextLong​(long bound)

Возвращает псевдослучайное значение long между нулём (включительно) и указанной границей (исключительно).

long nextLong​(long origin, long bound)

Возвращает псевдослучайное значение long между указанным началом (включительно) и указанной границей (исключительно).

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

Spec-Zone .ru
спецификации, руководства, описания, API