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