Spec-Zone.ru › OpenJDK 8

Класс 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. Кроме того, экземпляры, созданные по умолчанию, не используют криптографически случайное семя, если системная переменная java.util.secureRandomSeed не установлена в значение true.

Since:
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.

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 в одной и той же программе, генерируют одинаковые последовательности значений.

Параметры:
seed - начальное значение seed

SplittableRandom

public SplittableRandom()

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

Методы

split

public SplittableRandom split()

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

Возвращает:
новый экземпляр SplittableRandom

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 меньше нуля
IllegalArgumentException - если 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.

Spec-Zone.ru

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