Интерфейс RandomGenerator.LeapableGenerator
- Все суперинтерфейсы:
-
RandomGenerator,RandomGenerator.JumpableGenerator,RandomGenerator.StreamableGenerator
- Все известные подинтерфейсы:
RandomGenerator.ArbitrarilyJumpableGenerator
- Включающий интерфейс:
- RandomGenerator
public static interface RandomGenerator.LeapableGenerator extends RandomGenerator.JumpableGenerator
RandomGenerator.LeapableGenerator создают итерационным перепрыгиванием от одного исходного объекта RandomGenerator.LeapableGenerator, а затем для каждого такого объекта генерируют подпоследовательность объектов итерационным перепрыгиванием. Понятийной разницы между перепрыгиванием и перескакиванием мало, но обычно перепрыгивание — это очень длинный перескок в цикле состояния (возможно, расстояние в 2128 или около того).
В идеале, все объекты RandomGenerator.LeapableGenerator, полученные итерационным перепрыгиванием и перескакиванием от одного исходного объекта RandomGenerator.LeapableGenerator, должны быть статистически независимыми друг от друга и индивидуально равномерными. На практике нужно довольствоваться некоторым приближением к независимости и равномерности. В частности, конкретная реализация может предполагать, что каждый генератор в потоке, созданном методом leaps, используется для получения (перепрыгиванием) не более 264 объектов. Реализаторам рекомендуется использовать алгоритмы, период которых составляет не менее 2191.
Предусмотрены методы для выполнения одиночного перепрыгивания, а также для создания потока генераторов, полученных из исходного путем итеративного копирования и перепрыгивания внутреннего состояния. Созданные генераторы должны реализовывать интерфейс RandomGenerator.JumpableGenerator, но не обязательно также реализовывать интерфейс RandomGenerator.LeapableGenerator. Типичной стратегией для многопоточного приложения является создание одного объекта RandomGenerator.LeapableGenerator, вызов его метода leaps ровно один раз, а затем распределение генераторов из получившегося потока, по одному на каждый поток. Затем метод jump() каждого такого генератора должен вызывать подпоток объектов-генераторов.
Объекты, реализующие RandomGenerator.LeapableGenerator, обычно не являются криптографически безопасными. Вместо этого используйте SecureRandom для получения криптографически безопасного псевдослучайного генератора чисел для использования в приложениях, чувствительных к безопасности.
Краткое описание вложенных классов
Вложенные классы/интерфейсы, объявленные в интерфейсе java.util.random.RandomGenerator
RandomGenerator.ArbitrarilyJumpableGenerator, RandomGenerator.JumpableGenerator, RandomGenerator.LeapableGenerator, RandomGenerator.SplittableGenerator, RandomGenerator.StreamableGenerator
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
RandomGenerator.LeapableGenerator |
copy() |
Возвращает новый генератор, внутреннее состояние которого является точной копией этого генератора (следовательно, их будущее поведение должно быть идентичным, если они подвергаются той же серии операций). |
default RandomGenerator.JumpableGenerator |
copyAndLeap() |
Копирует этот генератор, перепрыгивает этот генератор вперёд, затем возвращает копию. |
void |
leap() |
Изменяет состояние этого генератора псевдослучайных чисел, чтобы перепрыгнуть вперёд на большое фиксированное расстояние (обычно 296 или более) в его цикле состояния. |
double |
leapDistance() |
Возвращает расстояние, на которое метод leap() перепрыгнет вперёд в цикле состояния этого объекта-генератора. |
default Stream<RandomGenerator.JumpableGenerator> |
leaps() |
Возвращает эффективный неограниченный поток новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator.JumpableGenerator. |
default Stream<RandomGenerator.JumpableGenerator> |
leaps |
Возвращает поток, создающий заданное streamSize количество новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator.JumpableGenerator. |
static RandomGenerator.LeapableGenerator |
of |
Методы, объявленные в интерфейсе 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, jump, jumpDistance, jumps, jumps, rngs, rngs
Подробное описание методов
of
static RandomGenerator.LeapableGenerator of(String name)
- Параметры:
-
name- Название алгоритма генератора псевдослучайных чисел алгоритм - Возвращает:
- Экземпляр
RandomGenerator.LeapableGenerator - Исключения:
-
NullPointerException- если имя равно null -
IllegalArgumentException- если алгоритм с данным именем не найден
copy
RandomGenerator.LeapableGenerator copy()
- Задано:
-
copyв интерфейсеRandomGenerator.JumpableGenerator - Возвращает:
- новый объект, являющийся копией этого генератора
leap
void leap()
leapDistance
double leapDistance()
leap() перепрыгнет вперёд в цикле состояния этого объекта-генератора.- Возвращает:
- стандартное расстояние перепрыгивания (как значение
double)
leaps
default Stream<RandomGenerator.JumpableGenerator> leaps()
RandomGenerator.JumpableGenerator.- Требования к реализации:
- Стандартная реализация генерирует последовательный поток, который многократно вызывает
copy() иleap() у этого генератора, и копии становятся генераторами, производимыми потоком. - Примечание реализации:
- Допускается реализовывать этот метод аналогичным образом
leaps(Long.MAX_VALUE). - Возвращает:
- поток объектов, реализующих интерфейс
RandomGenerator.JumpableGenerator
leaps
default Stream<RandomGenerator.JumpableGenerator> leaps(long streamSize)
streamSize количество новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator.JumpableGenerator.- Требования к реализации:
- Стандартная реализация генерирует последовательный поток, который многократно вызывает
copy() иleap() у этого генератора, и копии становятся генераторами, производимыми потоком. - Параметры:
-
streamSize- количество генераторов для генерации - Возвращает:
- поток объектов, реализующих интерфейс
RandomGenerator.JumpableGenerator - Исключения:
-
IllegalArgumentException- еслиstreamSizeменьше нуля
copyAndLeap
default RandomGenerator.JumpableGenerator copyAndLeap()
- Требования к реализации:
- Стандартная реализация копирует, перепрыгивает и затем возвращает копию.
- Возвращает:
- копия этого объекта генератора до перепрыгивания
© 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.LeapableGenerator.html