Интерфейс 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 для получения криптографически безопасного генератора псевдослучайных чисел для использования в приложениях, чувствительных к безопасности.
Краткое описание вложенных классов
Вложенные классы/интерфейсы, объявленные в интерфейсе java.util.random.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 |
|
default Stream |
rngs() |
Возвращает эффективно неограниченный поток новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator. |
default Stream |
rngs |
Возвращает поток, производящий заданное число streamSize новых генераторов псевдослучайных чисел, каждый из которых реализует интерфейс RandomGenerator. |
Методы, объявленные в интерфейсе 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
Подробное описание методов
of
static RandomGenerator.JumpableGenerator of(String 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)
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)
RandomGenerator. В идеале генераторы в потоке будут статистически независимыми.- Определено в:
-
rngsв интерфейсеRandomGenerator.StreamableGenerator - Требования к реализации:
- Стандартная реализация вызывает
jumps(streamSize). - Параметры:
-
streamSize- количество генераторов для генерации - Возвращает:
- поток объектов, реализующих интерфейс
RandomGenerator - Исключения:
-
IllegalArgumentException- еслиstreamSizeменьше нуля
copyAndJump
default RandomGenerator copyAndJump()
- Требования к реализации:
- Стандартная реализация копирует, производит переход и затем возвращает копию.
- Возвращает:
- копию этого объекта-генератора до момента перехода
© 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.JumpableGenerator.html