Класс RandomGeneratorFactory<T extends RandomGenerator>
java.lang.Object
java.util.random.RandomGeneratorFactory<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()
.sorted(Comparator.comparingInt(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<RandomGeneratorFactory<RandomGenerator>> |
all() |
Возвращает непустой поток доступных RandomGeneratorFactory(s). |
T |
create() |
Создает экземпляр RandomGenerator на основе выбранного алгоритма. |
T |
create |
Создает экземпляр RandomGenerator на основе выбранного алгоритма, предоставляя начальное значение byte[]. |
T |
create |
Создает экземпляр RandomGenerator на основе выбранного алгоритма, предоставляя начальное значение long. |
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> |
of |
Возвращает RandomGeneratorFactory, который может создавать экземпляры RandomGenerator, использующие name алгоритм. |
BigInteger |
period() |
Возвращает период используемого алгоритма генератора случайных чисел. |
int |
stateBits() |
Возвращает количество битов, используемых алгоритмом для поддержания состояния seed. |
Методы
of
public static <T extends RandomGenerator> RandomGeneratorFactory<T> of(String name)
Возвращает
RandomGeneratorFactory, который может генерировать экземпляры RandomGenerator, использующие алгоритм name алгоритм.- Требования к реализации:
- Доступность определяется RandomGeneratorFactory с использованием API поставщика услуг для поиска реализаций интерфейса RandomGenerator.
- Параметры типа:
-
T- ПодинтерфейсRandomGeneratorдля генерации - Параметры:
-
name- Название алгоритма генератора псевдослучайных чисел алгоритм - Возвращает:
-
RandomGeneratorFactoryRandomGenerator - Исключения:
-
NullPointerException- если имя null -
IllegalArgumentException- если алгоритм с заданным именем не найден
getDefault
public static RandomGeneratorFactory<RandomGenerator> getDefault()
Возвращает
RandomGeneratorFactory, удовлетворяющий минимальному требованию наличия алгоритма, биты состояния которого больше или равны 64.- Требования к реализации:
- Так как алгоритмы будут совершенствоваться со временем, нет гарантии, что этот метод будет возвращать тот же алгоритм со временем.
- Возвращает:
RandomGeneratorFactory
all
public static Stream<RandomGeneratorFactory<RandomGenerator>> all()
Возвращает непустой поток доступных
RandomGeneratorFactory(s). Генераторы случайных чисел, помеченные как устаревшие, не включаются в результат.- Требования к реализации:
- Доступность определяется RandomGeneratorFactory с использованием API поставщика услуг для поиска реализаций интерфейса RandomGenerator.
- Возвращает:
- непустой поток всех доступных
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 типа long. Если алгоритм не поддерживает seed типа long, используется форма create без аргументов.- Параметры:
-
seed- начальное значение seed типа long. - Возвращает:
- новый экземпляр
RandomGenerator.
create
public T create(byte[] seed)
Создает экземпляр
RandomGenerator на основе выбранного алгоритма, предоставляя начальное значение seed типа byte[]. Если алгоритм не поддерживает seed типа byte[], используется форма create без аргументов.- Параметры:
-
seed- начальное значение seed типа byte[]. - Возвращает:
- новый экземпляр
RandomGenerator. - Исключения:
-
NullPointerException- если seed равно null.
© 1993, 2021, 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/17/docs/api/java.base/java/util/random/RandomGeneratorFactory.html