Класс RandomGeneratorFactory<T extends RandomGenerator>
java.lang.Object
java.util.random.RandomGeneratorFactory<T>
- Параметры типа:
T- тип создаваемого генератора случайных чисел
public final class RandomGeneratorFactory<T extends RandomGenerator> extends Object
Это фабричный класс для создания нескольких генераторов случайных чисел с определённым алгоритмом. RandomGeneratorFactory также предоставляет методы для описания атрибутов (или свойств) генератора и может использоваться для выбора алгоритмов генерации случайных чисел. Обычно эти методы используются совместно с
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();
}
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
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static Stream |
all() |
Возвращает непустой поток доступных RandomGeneratorFactory(s). |
T |
create() |
Создаёт экземпляр RandomGenerator на основе выбранного алгоритма. |
T |
create |
|
T |
create |
|
int |
equidistribution() |
Возвращает равномерность распределения алгоритма. |
static RandomGeneratorFactory |
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> |
of |
Возвращает RandomGeneratorFactory, который может создавать экземпляры RandomGenerator, использующие name алгоритм. |
BigInteger |
period() |
Возвращает период алгоритма, используемого генератором случайных чисел. |
int |
stateBits() |
Возвращает количество битов, используемых алгоритмом для хранения состояния начального значения. |
Подробное описание методов
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
group
stateBits
public int stateBits()
Возвращает количество битов, используемых алгоритмом для хранения состояния начального значения.
- Возвращает:
- количество битов, используемых алгоритмом для хранения состояния начального значения.
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.
© 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