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