Interface 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.
- Начиная с:
- 17
Краткое описание вложенных классов
Вложенные классы и интерфейсы, объявленные в интерфейсе 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 |
Методы, объявленные в интерфейсе 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, 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, 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.LeapableGenerator.html