Spec-Zone.ru › OpenJDK 17

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

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

Вложенные классы/интерфейсы, объявленные в интерфейсе java.util.random.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 алгоритм.

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

doubles, doubles, doubles, doubles, 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

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

copyAndJump, jumpDistance, jumps, jumps, rngs, rngs

Методы, объявленные в интерфейсе java.util.random.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 - логарифм по основанию 2 расстояния для перехода вперед в цикле состояния
Исключения:
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)
Копирует этот генератор, переходит на это генератор вперед, а затем возвращает копию.
Требования к реализации:
Базовая реализация копирует этот, jumps(distance), а затем возвращает копию.
Параметры:
distance - расстояние для перехода вперед в цикле состояния
Возвращает:
копию этого генератора объекта до того, как произошел прыжок
Исключения:
IllegalArgumentException - если distance не больше или равно 0.0 или больше периода этого генератора

© 1993, 2021, 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/17/docs/api/java.base/java/util/random/RandomGenerator.ArbitrarilyJumpableGenerator.html

Spec-Zone.ru

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