Интерфейс 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 |
leaps() |
Возвращает эффективно неограниченный поток новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator.JumpableGenerator. |
default Stream |
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, 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.LeapableGenerator.html