Spec-Zone.ru › OpenJDK 21

Интерфейс 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 - если 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, 2023, 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/21/docs/api/java.base/java/util/random/RandomGenerator.ArbitrarilyJumpableGenerator.html

Spec-Zone.ru

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