Интерфейс 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 |
Копирует этот генератор, выполняет прыжок вперёд для этого генератора, а затем возвращает копию. |
default void |
jump() |
Изменяет состояние этого генератора псевдослучайных чисел, выполняя прыжок вперёд на большое фиксированное расстояние (обычно 264 или более) в пределах его цикла состояний. |
void |
jump |
Изменяет состояние этого генератора псевдослучайных чисел, выполняя прыжок вперёд на заданное расстояние в пределах его цикла состояний. |
void |
jumpPowerOfTwo |
Изменяет состояние этого генератора псевдослучайных чисел, выполняя прыжок вперёд на расстояние, равное 2 logDistance, в пределах его цикла состояний. |
default Stream |
jumps |
Возвращает практически неограниченный поток новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator.ArbitrarilyJumpableGenerator и создан путём выполнения прыжков для копий этого генератора на различные целочисленные кратные заданного расстояния прыжка. |
default Stream |
jumps |
Возвращает поток, создающий указанное число streamSize новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator.ArbitrarilyJumpableGenerator и создан путём выполнения прыжков для копий этого генератора на различные целочисленные кратные заданного расстояния прыжка. |
default void |
leap() |
Изменяет состояние этого генератора псевдослучайных чисел, выполняя прыжок вперёд на очень большое фиксированное расстояние (обычно 2128 или более) в пределах его цикла состояний. |
static RandomGenerator.ArbitrarilyJumpableGenerator |
of |
Возвращает экземпляр 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)
logDistance, в пределах его цикла состояний.- Параметры:
-
logDistance— двоичный логарифм расстояния прыжка вперёд в пределах цикла состояний - Исключения:
-
IllegalArgumentException— еслиlogDistanceравно 2logDistanceи это значение превышает период данного генератора
jump
void jump(double distance)
- Параметры:
-
distance— расстояние прыжка вперёд в пределах цикла состояний - Исключения:
-
IllegalArgumentException— еслиdistanceне больше или равно 0.0 либо превышает период данного генератора
jump
default void jump()
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()
leapDistance().- Определено в:
-
leapв интерфейсеRandomGenerator.LeapableGenerator
copyAndJump
default RandomGenerator.ArbitrarilyJumpableGenerator copyAndJump(double distance)
- Требования к реализации:
- Реализация по умолчанию копирует этот генератор, выполняет jump(distance), а затем возвращает копию.
- Параметры:
-
distance— расстояние прыжка вперёд в пределах цикла состояний - Возвращает:
- копию объекта генератора до выполнения прыжка
- Исключения:
-
IllegalArgumentException— еслиdistanceне больше или равно 0.0 либо превышает период данного генератора
© 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