Spec-Zone.ru › OpenJDK 25

Класс RandomGeneratorFactory<T extends RandomGenerator>

java.lang.Object
java.util.random.RandomGeneratorFactory<T>
Параметры типа:
T - тип создаваемого генератора случайных чисел
public final class RandomGeneratorFactory<T extends RandomGenerator> extends Object
Это фабричный класс для создания нескольких генераторов случайных чисел с определённым алгоритмом. RandomGeneratorFactory также предоставляет методы для выбора алгоритмов генерации случайных чисел. Определённый RandomGeneratorFactory можно найти с помощью метода of(String), передав в качестве аргумента строку с именем нужного алгоритма. Метод all() возвращает непустой Stream всех доступных RandomGeneratorFactorys, в котором можно найти RandomGeneratorFactory, подходящий для конкретной задачи. Существует три метода создания экземпляра RandomGenerator в зависимости от требуемого типа начального значения. Метод create(long) используется для создания с начальным значением типа long, create(byte[]) — для создания с начальным значением типа byte[], а create() — для создания со случайным начальным значением. Пример:
   RandomGeneratorFactory<RandomGenerator> factory = RandomGeneratorFactory.of("Random");

    for (int i = 0; i < 10; i++) {
        new Thread(() -> {
            RandomGenerator random = factory.create(100L);
            System.out.println(random.nextDouble());
        }).start();
    }
RandomGeneratorFactory также предоставляет методы для описания атрибутов (или свойств) генератора и может использоваться для выбора алгоритмов генерации случайных чисел. Обычно эти методы используются совместно с all(). В этом примере код находит RandomGeneratorFactory, который создаёт RandomGenerators с наибольшим количеством битов состояния.
    RandomGeneratorFactory<RandomGenerator> best = RandomGeneratorFactory.all()
        .filter(rgf -> !rgf.name().equals("SecureRandom")) // SecureRandom has MAX_VALUE stateBits.
        .sorted(Comparator.comparingInt(RandomGeneratorFactory<RandomGenerator>::stateBits).reversed())
        .findFirst()
        .orElse(RandomGeneratorFactory.of("Random"));
    System.out.println(best.name() + " in " + best.group() + " was selected");

    RandomGenerator rng = best.create();
    System.out.println(rng.nextLong());
Начиная с:
17
См. также:
  • java.util.random

Краткое описание методов

Модификатор и тип Метод Описание
static Stream<RandomGeneratorFactory<RandomGenerator>> all()
Возвращает непустой поток доступных RandomGeneratorFactory(s).
T create()
Создаёт экземпляр RandomGenerator на основе выбранного алгоритма.
T create(byte[] seed)
Создаёт экземпляр RandomGenerator на основе выбранного алгоритма и предоставленного seed.
T create(long seed)
Создаёт экземпляр RandomGenerator на основе выбранного алгоритма и предоставленного seed.
int equidistribution()
Возвращает равномерность распределения алгоритма.
static RandomGeneratorFactory<RandomGenerator> getDefault()
Возвращает RandomGeneratorFactory, удовлетворяющий минимальному требованию: число битов состояния его алгоритма должно быть не меньше 64.
String group()
Возвращает имя группы алгоритма, используемого генератором случайных чисел.
boolean isArbitrarilyJumpable()
Возвращает true, если генератор случайных чисел может перейти к произвольно заданной удалённой точке цикла состояния.
boolean isDeprecated()
Возвращает true, если реализация RandomGenerator (алгоритм) помечена как устаревшая.
boolean isHardware()
Возвращает true, если генератор случайных чисел использует аппаратное устройство (HRNG) для получения энтропийных данных.
boolean isJumpable()
Возвращает true, если генератор случайных чисел может перейти к заданной удалённой точке цикла состояния.
boolean isLeapable()
Возвращает true, если генератор случайных чисел поддерживает переход и может переместиться к очень удалённой точке цикла состояния.
boolean isSplittable()
Возвращает true, если генератор случайных чисел можно клонировать в отдельный объект с теми же свойствами, но расположенный дальше в цикле состояния.
boolean isStatistical()
Возвращает true, если генератор случайных чисел вычисляется с помощью арифметического алгоритма и является статистически детерминированным.
boolean isStochastic()
Возвращает true, если генератор случайных чисел вычисляется с использованием внешних источников или источников энтропии в качестве входных данных.
boolean isStreamable()
Возвращает true, если генератор случайных чисел можно использовать для создания Streams случайных чисел.
String name()
Возвращает имя алгоритма, используемого генератором случайных чисел.
static <T extends RandomGenerator>
RandomGeneratorFactory<T>
of(String name)
Возвращает RandomGeneratorFactory, который может создавать экземпляры RandomGenerator, использующие name алгоритм.
BigInteger period()
Возвращает период алгоритма, используемого генератором случайных чисел.
int stateBits()
Возвращает количество битов, используемых алгоритмом для хранения состояния начального значения.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание методов

of

public static <T extends RandomGenerator> RandomGeneratorFactory<T> of(String name)
Возвращает RandomGeneratorFactory, который может создавать экземпляры RandomGenerator, использующие name алгоритм.
Параметры типа:
T - подинтерфейс RandomGenerator, экземпляры которого требуется создавать
Параметры:
name - имя алгоритма генерации случайных чисел
Возвращает:
RandomGeneratorFactory для RandomGenerator
Исключения:
NullPointerException - если имя равно null
IllegalArgumentException - если алгоритм с указанным именем не найден

getDefault

public static RandomGeneratorFactory<RandomGenerator> getDefault()
Возвращает RandomGeneratorFactory, удовлетворяющий минимальному требованию: число битов состояния его алгоритма должно быть не меньше 64.
Требования к реализации:
Поскольку алгоритмы со временем совершенствуются, нет гарантии, что этот метод будет возвращать один и тот же алгоритм.
Возвращает:
RandomGeneratorFactory

all

public static Stream<RandomGeneratorFactory<RandomGenerator>> all()
Возвращает непустой поток доступных RandomGeneratorFactory(s). Генераторы случайных чисел, помеченные как устаревшие, не включаются в результат.
Возвращает:
непустой поток всех доступных RandomGeneratorFactory(s).

name

public String name()
Возвращает имя алгоритма, используемого генератором случайных чисел.
Возвращает:
Имя алгоритма.

group

public String group()
Возвращает имя группы алгоритма, используемого генератором случайных чисел.
Возвращает:
Имя группы алгоритма.

stateBits

public int stateBits()
Возвращает количество битов, используемых алгоритмом для хранения состояния начального значения.
Возвращает:
количество битов, используемых алгоритмом для хранения состояния начального значения.

equidistribution

public int equidistribution()
Возвращает равномерность распределения алгоритма.
Возвращает:
равномерность распределения алгоритма.

period

public BigInteger period()
Возвращает период алгоритма, используемого генератором случайных чисел. Если период невозможно определить, возвращает BigInteger.ZERO.
Возвращает:
период типа BigInteger.

isStatistical

public boolean isStatistical()
Возвращает true, если генератор случайных чисел вычисляется с помощью арифметического алгоритма и является статистически детерминированным.
Возвращает:
true, если генератор случайных чисел является статистическим.

isStochastic

public boolean isStochastic()
Возвращает true, если генератор случайных чисел вычисляется с использованием внешних источников или источников энтропии в качестве входных данных.
Возвращает:
true, если генератор случайных чисел является стохастическим.

isHardware

public boolean isHardware()
Возвращает true, если генератор случайных чисел использует аппаратное устройство (HRNG) для получения энтропийных данных.
Возвращает:
true, если генератор случайных чисел создаётся аппаратными средствами.

isArbitrarilyJumpable

public boolean isArbitrarilyJumpable()
Возвращает true, если генератор случайных чисел может перейти к произвольно заданной удалённой точке цикла состояния.
Возвращает:
true, если генератор случайных чисел поддерживает произвольные переходы.

isJumpable

public boolean isJumpable()
Возвращает true, если генератор случайных чисел может перейти к заданной удалённой точке цикла состояния.
Возвращает:
true, если генератор случайных чисел поддерживает переходы.

isLeapable

public boolean isLeapable()
Возвращает true, если генератор случайных чисел поддерживает переходы и может переместиться к очень удалённой точке цикла состояния.
Возвращает:
true, если генератор случайных чисел поддерживает дальние переходы.

isSplittable

public boolean isSplittable()
Возвращает true, если генератор случайных чисел можно клонировать в отдельный объект с теми же свойствами, но расположенный дальше в цикле состояния.
Возвращает:
true, если генератор случайных чисел поддерживает разделение.

isStreamable

public boolean isStreamable()
Возвращает true, если генератор случайных чисел можно использовать для создания Streams случайных чисел.
Возвращает:
true, если генератор случайных чисел поддерживает потоки.

isDeprecated

public boolean isDeprecated()
Возвращает true, если реализация RandomGenerator (алгоритм) помечена как устаревшая.
Примечание по реализации:
Алгоритмы генерации случайных чисел со временем развиваются: появляются новые алгоритмы, а старые теряют актуальность. Если старый алгоритм признаётся непригодным для дальнейшего использования, его помечают как устаревший, чтобы указать, что в будущем он может быть удалён.
Возвращает:
true, если реализация RandomGenerator (алгоритм) помечена как устаревшая

create

public T create()
Создаёт экземпляр RandomGenerator на основе выбранного алгоритма.
Возвращает:
новый экземпляр RandomGenerator.

create

public T create(long seed)
Создаёт экземпляр RandomGenerator на основе выбранного алгоритма и предоставленного seed. Если RandomGenerator не поддерживает создание экземпляра с помощью seed типа long, этот метод выбрасывает исключение UnsupportedOperationException.
Параметры:
seed - начальное значение типа long для генератора случайных чисел.
Возвращает:
новый экземпляр RandomGenerator.
Исключения:
UnsupportedOperationException - если seed типа long не поддерживается.

create

public T create(byte[] seed)
Создаёт экземпляр RandomGenerator на основе выбранного алгоритма и предоставленного seed. Если RandomGenerator не поддерживает создание экземпляра с помощью seed типа byte[], этот метод выбрасывает исключение UnsupportedOperationException.
Параметры:
seed - массив байтов, используемый в качестве начального значения для генератора случайных чисел.
Возвращает:
новый экземпляр RandomGenerator.
Исключения:
UnsupportedOperationException - если seed типа byte[] не поддерживается.
NullPointerException - если начальное значение равно null.

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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/RandomGeneratorFactory.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API