Spec-Zone.ru › OpenJDK 27

Интерфейс RandomGenerator.LeapableGenerator

Все суперинтерфейсы:
RandomGenerator, RandomGenerator.JumpableGenerator, RandomGenerator.StreamableGenerator
Все известные подинтерфейсы:
RandomGenerator.ArbitrarilyJumpableGenerator
Внешний интерфейс:
RandomGenerator
public static interface RandomGenerator.LeapableGenerator extends RandomGenerator.JumpableGenerator
Этот интерфейс предназначен для предоставления общего протокола объектам, которые генерируют последовательности псевдослучайных значений и могут легко не только совершать переход вперед, но и перескакивать на большое расстояние (например, 2128) к очень удаленной точке цикла состояний. Обычно создают последовательность объектов RandomGenerator.LeapableGenerator, многократно выполняя скачки от одного исходного объекта RandomGenerator.LeapableGenerator, а затем для каждого такого объекта создают подпоследовательность объектов, многократно выполняя переходы. Концептуальной разницы между скачком и переходом почти нет, однако обычно скачок — это очень длинный переход в цикле состояний (возможно, на расстояние около 2128).

В идеале все объекты RandomGenerator.LeapableGenerator, полученные многократными скачками и переходами от одного исходного объекта RandomGenerator.LeapableGenerator, статистически независимы друг от друга и каждый из них имеет равномерное распределение. На практике приходится довольствоваться некоторым приближением к независимости и равномерности. В частности, конкретная реализация может предполагать, что каждый генератор в потоке, созданном методом leaps, используется для создания (посредством переходов) не более 264 объектов. Реализаторам рекомендуется использовать алгоритмы с периодом не менее 2191.

Предусмотрены методы для выполнения одной операции скачка, а также для создания потока генераторов, полученных из исходного генератора путем многократного копирования и скачков внутреннего состояния. Создаваемые генераторы должны реализовывать интерфейс RandomGenerator.JumpableGenerator, но не обязаны также реализовывать интерфейс RandomGenerator.LeapableGenerator. Типичная стратегия для многопоточного приложения — создать один объект RandomGenerator.LeapableGenerator, ровно один раз вызвать его метод leaps, а затем распределить генераторы из полученного потока, по одному на каждый поток выполнения. После этого для каждого такого генератора следует вызвать метод jump(), чтобы создать подпоток объектов-генераторов.

Объекты, реализующие RandomGenerator.LeapableGenerator, как правило, не являются криптографически стойкими. Для приложений, требующих обеспечения безопасности, вместо этого рассмотрите возможность использования SecureRandom для получения криптографически стойкого генератора псевдослучайных чисел.

Начиная с:
17

Краткое описание вложенных классов

Вложенные классы/интерфейсы, объявленные в интерфейсе RandomGenerator

RandomGenerator.ArbitrarilyJumpableGenerator, RandomGenerator.JumpableGenerator, RandomGenerator.LeapableGenerator, RandomGenerator.SplittableGenerator, RandomGenerator.StreamableGenerator
Модификатор и тип Интерфейс Описание
static interface  RandomGenerator.ArbitrarilyJumpableGenerator
Этот интерфейс предназначен для предоставления общего протокола объектам, которые генерируют последовательности псевдослучайных значений и могут легко совершать переход вперед на произвольное расстояние к удаленной точке цикла состояний.
static interface  RandomGenerator.JumpableGenerator
Этот интерфейс предназначен для предоставления общего протокола объектам, которые генерируют псевдослучайные значения и могут легко совершать переход вперед на умеренное расстояние (например, 264) к удаленной точке цикла состояний.
static interface  RandomGenerator.LeapableGenerator
Этот интерфейс предназначен для предоставления общего протокола объектам, которые генерируют последовательности псевдослучайных значений и могут легко не только совершать переход вперед, но и перескакивать на большое расстояние (например, 2128) к очень удаленной точке цикла состояний.
static interface  RandomGenerator.SplittableGenerator
Этот интерфейс предназначен для предоставления общего протокола объектам, которые генерируют последовательности псевдослучайных значений и могут быть разделены на два объекта (исходный и новый), каждый из которых соблюдает тот же протокол (и поэтому может рекурсивно разделяться неограниченное число раз).
static interface  RandomGenerator.StreamableGenerator
Интерфейс RandomGenerator.StreamableGenerator расширяет интерфейс RandomGenerator, добавляя методы, возвращающие потоки объектов RandomGenerator.

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

Модификатор и тип Метод Описание
RandomGenerator.LeapableGenerator copy()
Возвращает новый генератор, внутреннее состояние которого является точной копией состояния этого генератора (поэтому при выполнении одной и той же последовательности операций их дальнейшее поведение должно быть идентичным).
default RandomGenerator.JumpableGenerator copyAndLeap()
Копирует этот генератор, выполняет переход этого генератора вперед, а затем возвращает копию.
void leap()
Изменяет состояние этого генератора псевдослучайных чисел, выполняя переход вперед на большое фиксированное расстояние (обычно 296 или более) в пределах цикла состояний.
double leapDistance()
Возвращает расстояние, на которое метод leap() перемещается вперед в цикле состояний этого объекта-генератора.
default Stream<RandomGenerator.JumpableGenerator> leaps()
Возвращает практически неограниченный поток новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator.JumpableGenerator.
default Stream<RandomGenerator.JumpableGenerator> leaps(long streamSize)
Возвращает поток, создающий указанное streamSize количество новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator.JumpableGenerator.
static RandomGenerator.LeapableGenerator of(String name)
Возвращает экземпляр RandomGenerator.LeapableGenerator, использующий алгоритм name алгоритм.

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

doubles, doubles, doubles, doubles, equiDoubles, ints, ints, ints, ints, isDeprecated, longs, longs, longs, longs, nextBoolean, nextBytes, nextDouble, nextDouble, nextDouble, nextExponential, nextFloat, nextFloat, nextFloat, nextGaussian, nextGaussian, nextInt, nextInt, nextInt, nextLong, nextLong, nextLong
Модификатор и тип Метод Описание
default DoubleStream doubles()
Возвращает практически неограниченный поток псевдослучайно выбранных значений double.
default DoubleStream doubles(double randomNumberOrigin, double randomNumberBound)
Возвращает практически неограниченный поток псевдослучайно выбранных значений double, каждое из которых находится между указанным начальным значением (включительно) и указанной верхней границей (исключительно).
default DoubleStream doubles(long streamSize)
Возвращает поток, создающий указанное streamSize количество псевдослучайно выбранных значений double.
default DoubleStream doubles(long streamSize, double randomNumberOrigin, double randomNumberBound)
Возвращает поток, создающий указанное streamSize количество псевдослучайно выбранных значений double, каждое из которых находится между указанным начальным значением (включительно) и указанной верхней границей (исключительно).
default DoubleStream equiDoubles(double left, double right, boolean isLeftIncluded, boolean isRightIncluded)
Возвращает практически неограниченный поток псевдослучайно выбранных значений double, каждое из которых находится между указанной нижней left границей и указанной верхней right границей.
default IntStream ints()
Возвращает практически неограниченный поток псевдослучайно выбранных значений int.
default IntStream ints(int randomNumberOrigin, int randomNumberBound)
Возвращает практически неограниченный поток псевдослучайно выбранных значений int, каждое из которых находится между указанным начальным значением (включительно) и указанной верхней границей (исключительно).
default IntStream ints(long streamSize)
Возвращает поток, создающий указанное streamSize количество псевдослучайно выбранных значений int.
default IntStream ints(long streamSize, int randomNumberOrigin, int randomNumberBound)
Возвращает поток, создающий указанное streamSize количество псевдослучайно выбранных значений int, каждое из которых находится между указанным начальным значением (включительно) и указанной верхней границей (исключительно).
default boolean isDeprecated()
Возвращает true, если реализация RandomGenerator (алгоритм) помечена как устаревающая.
default LongStream longs()
Возвращает практически неограниченный поток псевдослучайно выбранных значений long.
default LongStream longs(long streamSize)
Возвращает поток, создающий указанное streamSize количество псевдослучайно выбранных значений long.
default LongStream longs(long randomNumberOrigin, long randomNumberBound)
Возвращает практически неограниченный поток псевдослучайно выбранных значений long, каждое из которых находится между указанным начальным значением (включительно) и указанной верхней границей (исключительно).
default LongStream longs(long streamSize, long randomNumberOrigin, long randomNumberBound)
Возвращает поток, создающий указанное streamSize количество псевдослучайно выбранных значений long, каждое из которых находится между указанным начальным значением (включительно) и указанной верхней границей (исключительно).
default boolean nextBoolean()
Возвращает псевдослучайно выбранное значение boolean.
default void nextBytes(byte[] bytes)
Заполняет предоставленный пользователем байтовый массив сгенерированными байтовыми значениями, равномерно выбранными псевдослучайным образом из диапазона от -128 (включительно) до 127 (включительно).
default double nextDouble()
Возвращает псевдослучайное значение double от нуля (включительно) до единицы (исключительно).
default double nextDouble(double bound)
Возвращает псевдослучайно выбранное значение double от нуля (включительно) до указанной верхней границы (исключительно).
default double nextDouble(double origin, double bound)
Возвращает псевдослучайно выбранное значение double между указанным начальным значением (включительно) и указанной верхней границей (исключительно).
default double nextExponential()
Возвращает неотрицательное значение double, псевдослучайно выбранное из экспоненциального распределения со средним значением 1.
default float nextFloat()
Возвращает псевдослучайное значение float от нуля (включительно) до единицы (исключительно).
default float nextFloat(float bound)
Возвращает псевдослучайно выбранное значение float от нуля (включительно) до указанной верхней границы (исключительно).
default float nextFloat(float origin, float bound)
Возвращает псевдослучайно выбранное значение float между указанным начальным значением (включительно) и указанной верхней границей (исключительно).
default double nextGaussian()
Возвращает значение double, псевдослучайно выбранное из гауссовского (нормального) распределения со средним значением 0 и стандартным отклонением 1.
default double nextGaussian(double mean, double stddev)
Возвращает значение double, псевдослучайно выбранное из гауссовского (нормального) распределения со средним значением и стандартным отклонением, заданными аргументами.
default int nextInt()
Возвращает псевдослучайно выбранное значение int.
default int nextInt(int bound)
Возвращает псевдослучайно выбранное значение int от нуля (включительно) до указанной верхней границы (исключительно).
default int nextInt(int origin, int bound)
Возвращает псевдослучайно выбранное значение int между указанным начальным значением (включительно) и указанной верхней границей (исключительно).
long nextLong()
Возвращает псевдослучайно выбранное значение long.
default long nextLong(long bound)
Возвращает псевдослучайно выбранное значение long от нуля (включительно) до указанной верхней границы (исключительно).
default long nextLong(long origin, long bound)
Возвращает псевдослучайно выбранное значение long между указанным начальным значением (включительно) и указанной верхней границей (исключительно).

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

copyAndJump, jump, jumpDistance, jumps, jumps, rngs, rngs
Модификатор и тип Метод Описание
default RandomGenerator copyAndJump()
Копирует этот генератор, выполняет переход этого генератора вперед, а затем возвращает копию.
void jump()
Изменяет состояние этого генератора псевдослучайных чисел, выполняя переход вперед на большое фиксированное расстояние (обычно 264 или более) в пределах цикла состояний.
double jumpDistance()
Возвращает расстояние, на которое метод jump() перемещается вперед в цикле состояний этого объекта-генератора.
default Stream<RandomGenerator> jumps()
Возвращает практически неограниченный поток новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator.
default Stream<RandomGenerator> jumps(long streamSize)
Возвращает поток, создающий указанное streamSize количество новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator.
default Stream<RandomGenerator> rngs()
Возвращает практически неограниченный поток новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator.
default Stream<RandomGenerator> rngs(long streamSize)
Возвращает поток, создающий указанное streamSize количество новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator.

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

of

static RandomGenerator.LeapableGenerator of(String name)
Возвращает экземпляр RandomGenerator.LeapableGenerator, использующий алгоритм name алгоритм.
Параметры:
name — название алгоритма генератора случайных чисел
Возвращает:
экземпляр RandomGenerator.LeapableGenerator
Вызывает исключение:
NullPointerException — если имя равно null
IllegalArgumentException — если указанный алгоритм не найден

copy

RandomGenerator.LeapableGenerator copy()
Возвращает новый генератор, внутреннее состояние которого является точной копией состояния этого генератора (поэтому при выполнении одной и той же последовательности операций их дальнейшее поведение должно быть идентичным).
Определено в:
copy в интерфейсе RandomGenerator.JumpableGenerator
Возвращает:
новый объект, являющийся копией этого генератора

leap

void leap()
Изменяет состояние этого генератора псевдослучайных чисел, выполняя переход вперед на большое фиксированное расстояние (обычно 296 или более) в пределах цикла состояний.

leapDistance

double leapDistance()
Возвращает расстояние, на которое метод leap() перемещается вперед в цикле состояний этого объекта-генератора.
Возвращает:
расстояние перехода по умолчанию (в виде значения double)

leaps

default Stream<RandomGenerator.JumpableGenerator> leaps()
Возвращает практически неограниченный поток новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator.JumpableGenerator.
Требования к реализации:
Реализация по умолчанию создает последовательный поток, многократно вызывая методы copy() и leap() этого генератора; копии становятся генераторами, создаваемыми потоком.
Примечание по реализации:
Допускается реализация этого метода способом, эквивалентным методу leaps (Long.MAX_VALUE).
Возвращает:
поток объектов, реализующих интерфейс RandomGenerator.JumpableGenerator

leaps

default Stream<RandomGenerator.JumpableGenerator> leaps(long streamSize)
Возвращает поток, создающий указанное streamSize количество новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator.JumpableGenerator.
Требования к реализации:
Реализация по умолчанию создает последовательный поток, многократно вызывая методы copy() и leap() этого генератора; копии становятся генераторами, создаваемыми потоком.
Параметры:
streamSize — количество создаваемых генераторов
Возвращает:
поток объектов, реализующих интерфейс RandomGenerator.JumpableGenerator
Вызывает исключение:
IllegalArgumentException — если streamSize меньше нуля

copyAndLeap

default RandomGenerator.JumpableGenerator copyAndLeap()
Копирует этот генератор, выполняет переход этого генератора вперед, а затем возвращает копию.
Требования к реализации:
Реализация по умолчанию копирует этот генератор, выполняет переход, а затем возвращает копию.
Возвращает:
копию этого объекта-генератора, созданную до выполнения перехода

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, которая содержит более подробные описания для разработчиков, включая концептуальные обзоры, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, 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.

Spec-Zone.ru

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