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