Класс RandomGeneratorFactory<T extends RandomGenerator>
java.lang.Object
java.util.random.RandomGeneratorFactory<T>
- Type Parameters:
-
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());
- Since:
- 17
- See Also:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static Stream |
all() |
Возвращает непустой поток доступных RandomGeneratorFactory(s). |
T |
create() |
Создаёт экземпляр RandomGenerator на основе выбранного алгоритма. |
T |
create |
Создаёт экземпляр RandomGenerator на основе выбранного алгоритма, предоставляя начальное значение byte[]. |
T |
create |
Создаёт экземпляр RandomGenerator на основе выбранного алгоритма, предоставляя начальное значение long. |
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 алгоритма.- Требования к реализации:
- Доступность определяется RandomGeneratorFactory с использованием API поставщика услуг для поиска реализаций интерфейса RandomGenerator.
- Параметры типа:
-
T- ПодинтерфейсRandomGeneratorдля генерации - Параметры:
-
name- Имя алгоритма генератора случайных чисел - Возвращает:
-
RandomGeneratorFactoryдляRandomGenerator - Исключение:
-
NullPointerException- если имя null -
IllegalArgumentException- если алгоритм с указанным именем не найден
getDefault
public static RandomGeneratorFactory<RandomGenerator> getDefault()
Возвращает
RandomGeneratorFactory, удовлетворяющий минимальному требованию, имеющему алгоритм, биты состояния которого не меньше 64.- Требования к реализации:
- Поскольку алгоритмы будут улучшаться со временем, нет гарантии, что этот метод будет возвращать тот же алгоритм со временем.
- Возвращает:
- a
RandomGeneratorFactory
all
public static Stream<RandomGeneratorFactory<RandomGenerator>> all()
Возвращает непустой поток доступных
RandomGeneratorFactory(s). RandomGenerators, помеченные как устаревшие, не включаются в результат.- Требования к реализации:
- Доступность определяется RandomGeneratorFactory с использованием API поставщика услуг для поиска реализаций интерфейса RandomGenerator.
- Возвращает:
- непустой поток всех доступных
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 period.
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 на основе выбранного алгоритма, предоставляя начальное значение long seed. Если long seed не поддерживается алгоритмом, используется форма create без аргументов.- Параметры:
-
seed- значение начального long seed. - Возвращает:
- новый экземпляр
RandomGenerator.
create
public T create(byte[] seed)
Создает экземпляр
RandomGenerator на основе выбранного алгоритма, предоставляя начальное значение byte[] seed. Если byte[] seed не поддерживается алгоритмом, используется форма create без аргументов.- Параметры:
-
seed- значение начального byte array seed. - Возвращает:
- новый экземпляр
RandomGenerator. - Исключение:
-
NullPointerException- если seed null.
© 1993, 2023, 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/21/docs/api/java.base/java/util/random/RandomGeneratorFactory.html