Spec-Zone.ru › OpenJDK 27

Class 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, в зависимости от требуемого типа начального значения. Для создания с начальным значением типа long используется create(long), для создания с начальным значением типа byte[] — create(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
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект какому-либо другому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Финализация объявлена устаревшей и может быть удалена в одном из следующих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Приостанавливает текущий поток до его пробуждения, обычно посредством уведомления или прерывания.
final void wait(long timeoutMillis)
Приостанавливает текущий поток до его пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Приостанавливает текущий поток до его пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени.

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

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, 2026, 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.

Spec-Zone.ru

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