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