Spec-Zone.ru › OpenJDK 24

Класс 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()
Возвращает количество битов, используемых алгоритмом для поддержания состояния начального значения.

Методы, объявленные в классе java.lang.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 алгоритма.
Type Parameters:
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). RandomGenerators, помеченные как устаревшие, не включаются в результат.
Возвращает:
непустой поток всех доступных RandomGeneratorFactory(s).

name

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

group

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

stateBits

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

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, если генератор случайных чисел может использоваться для создания потока случайных чисел.
Возвращает:
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 - значение seed в формате long.
Возвращает:
новый экземпляр RandomGenerator.
Исключения:
UnsupportedOperationException - если seed типа long не поддерживается.

create

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

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/random/RandomGeneratorFactory.html

Spec-Zone.ru

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