Spec-Zone.ru › OpenJDK 25

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

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

В идеале все объекты RandomGenerator.ArbitrarilyJumpableGenerator, полученные в результате последовательных прыжков от одного исходного объекта RandomGenerator.ArbitrarilyJumpableGenerator, статистически независимы друг от друга и каждый из них имеет равномерное распределение, при условии что они не проходят по перекрывающимся участкам цикла состояний. На практике приходится довольствоваться некоторым приближением независимости и равномерности. В частности, конкретная реализация может предполагать, что каждый генератор в потоке, созданном методом jump(), используется для получения числа значений, не превышающего заданное расстояние прыжка. Реализаторам рекомендуется использовать алгоритмы с периодом не менее 2127.

Для многих приложений достаточно выполнить прыжок вперёд на степень двойки или небольшое кратное степени двойки расстояние, однако эта степень двойки может быть непредставима значением типа long. Чтобы избежать использования значений BigInteger в качестве расстояний прыжка, вместо них используются значения double.

Предусмотрены методы для выполнения одной операции прыжка, а также для создания потока генераторов, полученных из исходного генератора путём последовательного копирования и изменения внутреннего состояния. Типичная стратегия для многопоточного приложения — создать один объект RandomGenerator.ArbitrarilyJumpableGenerator, ровно один раз вызвать его метод jump(), а затем распределить генераторы из полученного потока между потоками исполнения — по одному на каждый поток. Однако каждый созданный генератор также имеет тип RandomGenerator.ArbitrarilyJumpableGenerator; при должной осторожности можно использовать различные расстояния прыжка, чтобы по-разному пройти весь цикл состояний.

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

Начиная с:
17

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

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

RandomGenerator.ArbitrarilyJumpableGenerator, RandomGenerator.JumpableGenerator, RandomGenerator.LeapableGenerator, RandomGenerator.SplittableGenerator, RandomGenerator.StreamableGenerator

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

Модификатор и тип Метод Описание
RandomGenerator.ArbitrarilyJumpableGenerator copy()
Возвращает новый генератор, внутреннее состояние которого является точной копией состояния этого генератора (поэтому их дальнейшее поведение должно быть одинаковым при выполнении одной и той же последовательности операций).
default RandomGenerator.ArbitrarilyJumpableGenerator copyAndJump(double distance)
Копирует этот генератор, выполняет прыжок вперёд для этого генератора, а затем возвращает копию.
default void jump()
Изменяет состояние этого генератора псевдослучайных чисел, выполняя прыжок вперёд на большое фиксированное расстояние (обычно 264 или более) в пределах его цикла состояний.
void jump(double distance)
Изменяет состояние этого генератора псевдослучайных чисел, выполняя прыжок вперёд на заданное расстояние в пределах его цикла состояний.
void jumpPowerOfTwo(int logDistance)
Изменяет состояние этого генератора псевдослучайных чисел, выполняя прыжок вперёд на расстояние, равное 2logDistance, в пределах его цикла состояний.
default Stream<RandomGenerator.ArbitrarilyJumpableGenerator> jumps(double distance)
Возвращает практически неограниченный поток новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator.ArbitrarilyJumpableGenerator и создан путём выполнения прыжков для копий этого генератора на различные целочисленные кратные заданного расстояния прыжка.
default Stream<RandomGenerator.ArbitrarilyJumpableGenerator> jumps(long streamSize, double distance)
Возвращает поток, создающий указанное число streamSize новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator.ArbitrarilyJumpableGenerator и создан путём выполнения прыжков для копий этого генератора на различные целочисленные кратные заданного расстояния прыжка.
default void leap()
Изменяет состояние этого генератора псевдослучайных чисел, выполняя прыжок вперёд на очень большое фиксированное расстояние (обычно 2128 или более) в пределах его цикла состояний.
static RandomGenerator.ArbitrarilyJumpableGenerator of(String name)
Возвращает экземпляр RandomGenerator.ArbitrarilyJumpableGenerator, использующий алгоритм 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

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

copyAndJump, jumpDistance, jumps, jumps, rngs, rngs

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

copyAndLeap, leapDistance, leaps, leaps

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

of

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

copy

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

jumpPowerOfTwo

void jumpPowerOfTwo(int logDistance)
Изменяет состояние этого генератора псевдослучайных чисел, выполняя прыжок вперёд на расстояние, равное 2logDistance, в пределах его цикла состояний.
Параметры:
logDistance — двоичный логарифм расстояния прыжка вперёд в пределах цикла состояний
Исключения:
IllegalArgumentException — если logDistance равно 2logDistance и это значение превышает период данного генератора

jump

void jump(double distance)
Изменяет состояние этого генератора псевдослучайных чисел, выполняя прыжок вперёд на заданное расстояние в пределах его цикла состояний.
Параметры:
distance — расстояние прыжка вперёд в пределах цикла состояний
Исключения:
IllegalArgumentException — если distance не больше или равно 0.0 либо превышает период данного генератора

jump

default void jump()
Изменяет состояние этого генератора псевдослучайных чисел, выполняя прыжок вперёд на большое фиксированное расстояние (обычно 264 или более) в пределах его цикла состояний. Используемое расстояние возвращается методом jumpDistance().
Определено в:
jump в интерфейсе RandomGenerator.JumpableGenerator
Требования к реализации:
Реализация по умолчанию вызывает jump(jumpDistance()).

jumps

default Stream<RandomGenerator.ArbitrarilyJumpableGenerator> jumps(double distance)
Возвращает практически неограниченный поток новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator.ArbitrarilyJumpableGenerator и создан путём выполнения прыжков для копий этого генератора на различные целочисленные кратные заданного расстояния прыжка.
Требования к реализации:
Реализация по умолчанию эквивалентна jumps (Long.MAX_VALUE).
Параметры:
distance — расстояние прыжка вперёд в пределах цикла состояний
Возвращает:
поток объектов, реализующих интерфейс RandomGenerator
Исключения:
IllegalArgumentException — если distance не больше или равно 0.0 либо превышает период данного генератора

jumps

default Stream<RandomGenerator.ArbitrarilyJumpableGenerator> jumps(long streamSize, double distance)
Возвращает поток, создающий указанное число streamSize новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator.ArbitrarilyJumpableGenerator и создан путём выполнения прыжков для копий этого генератора на различные целочисленные кратные заданного расстояния прыжка.
Требования к реализации:
Реализация по умолчанию эквивалентна jumps(distance).limit(streamSize).
Параметры:
streamSize — число создаваемых генераторов
distance — расстояние прыжка вперёд в пределах цикла состояний
Возвращает:
поток объектов, реализующих интерфейс RandomGenerator
Исключения:
IllegalArgumentException — если streamSize меньше нуля или если distance не больше или равно 0.0 либо превышает период данного генератора

leap

default void leap()
Изменяет состояние этого генератора псевдослучайных чисел, выполняя прыжок вперёд на очень большое фиксированное расстояние (обычно 2128 или более) в пределах его цикла состояний. Используемое расстояние возвращается методом leapDistance().
Определено в:
leap в интерфейсе RandomGenerator.LeapableGenerator

copyAndJump

default RandomGenerator.ArbitrarilyJumpableGenerator copyAndJump(double distance)
Копирует этот генератор, выполняет прыжок вперёд для этого генератора, а затем возвращает копию.
Требования к реализации:
Реализация по умолчанию копирует этот генератор, выполняет jump(distance), а затем возвращает копию.
Параметры:
distance — расстояние прыжка вперёд в пределах цикла состояний
Возвращает:
копию объекта генератора до выполнения прыжка
Исключения:
IllegalArgumentException — если distance не больше или равно 0.0 либо превышает период данного генератора

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/random/RandomGenerator.ArbitrarilyJumpableGenerator.html

Spec-Zone.ru

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