Интерфейс 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 |
jumps |
Возвращает эффективно неограниченный поток новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator.ArbitrarilyJumpableGenerator, полученный путём перехода копий этого генератора по разным целочисленным кратным заданной дистанции перехода. |
default Stream |
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- если 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, 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