Spec-Zone.ru › OpenJDK 25

Interface 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

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

Модификатор и тип Метод Описание
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

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

copyAndJump, jump, jumpDistance, jumps, jumps, rngs, rngs

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

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, 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.LeapableGenerator.html

Spec-Zone.ru

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