java.lang.Object
java.util.random.RandomGeneratorFactory<T>
- 类型参数:
T- 创建的随机生成器的类型
这是一个用于生成特定 算法 的多个随机数生成器的工厂类。
RandomGeneratorFactory 还提供描述生成器属性(或属性)的方法,可用于选择随机数生成器 算法 。这些方法通常与
RandomGeneratorFactory 还提供了选择随机数生成器算法的方法。可以使用 of(String) 方法找到特定的 RandomGeneratorFactory ,其中参数字符串是所需 算法 的名称。方法 all() 生成一个非空的 Stream 所有可用的 RandomGeneratorFactorys 可以被搜索以找到适合任务的 RandomGeneratorFactory 。根据所需初始种子的类型,可以使用三种方法构造 RandomGenerator 实例。 create(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() 结合使用。在此示例中,代码定位生成状态位数最多的 RandomGenerators 的 RandomGeneratorFactory 。
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<RandomGeneratorFactory<RandomGenerator>>all()返回可用RandomGeneratorFactory(s)的非空流。create()根据所选的 算法 创建RandomGenerator的实例。create(byte[] seed) 根据选择的 算法 创建一个RandomGenerator的实例,提供起始字节 [] 种子。create(long seed) 根据选择的 算法 创建一个RandomGenerator实例,提供起始长种子。int返回 算法 的等分布。返回一个RandomGeneratorFactory满足具有状态位大于或等于 64 的算法的最低要求。group()返回随机数生成器使用的算法的组名。boolean如果随机生成器可以跳到状态循环中任意指定的远点,则返回 true。boolean如果 RandomGenerator(算法)的实现已被标记为弃用,则返回 true。boolean如果随机生成器使用硬件设备 (HRNG) 产生熵输入,则返回 true。boolean如果随机生成器可以在状态循环中跳到指定的远点,则返回 true。boolean如果随机生成器是可跳跃的并且可以跳跃到状态循环中非常遥远的点,则返回 true。boolean如果可以将随机生成器克隆到具有相同属性但在状态循环中更远的单独对象中,则返回 true。boolean如果随机生成器是使用算术 算法 计算的并且具有统计确定性,则返回 true。boolean如果使用外部或熵源作为输入计算随机生成器,则返回 true。boolean如果随机生成器可用于创建Streams个随机数,则返回 true。name()返回随机数生成器使用的 算法 的名称。static <T extends RandomGenerator>
RandomGeneratorFactory<T>period()返回随机数生成器使用的算法的周期。int返回 算法 用于维持种子状态的位数。
-
方法详情
-
of
- 实现要求:
- 可用性由 RandomGeneratorFactory 使用服务提供者 API 来确定 RandomGenerator 接口的实现。
- 类型参数:
T-RandomGenerator的子接口生成- 参数:
name- 随机数生成器的名称 算法- 返回:
RandomGeneratorFactory的RandomGenerator- 抛出:
NullPointerException- 如果名称为空IllegalArgumentException- 如果找不到指定的算法
-
getDefault
返回一个RandomGeneratorFactory满足具有状态位大于或等于 64 的算法的最低要求。- 实现要求:
- 由于算法会随着时间的推移而改进,因此无法保证此方法会随着时间的推移返回相同的算法。
- 返回:
RandomGeneratorFactory
-
all
返回可用RandomGeneratorFactory(s)的非空流。标记为已弃用的 RandomGenerators 不包含在结果中。- 实现要求:
- 可用性由 RandomGeneratorFactory 使用服务提供者 API 来确定 RandomGenerator 接口的实现。
- 返回:
-
所有可用的非空流
RandomGeneratorFactory(s)。
-
name
返回随机数生成器使用的 算法 的名称。- 返回:
- 算法 的名称。
-
group
返回随机数生成器使用的算法的组名。- 返回:
- 算法 的组名。
-
stateBits
public int stateBits()返回 算法 用于维持种子状态的位数。- 返回:
- 算法 用于维持种子状态的位数。
-
equidistribution
public int equidistribution()返回 算法 的等分布。- 返回:
- 算法 的均匀分布。
-
period
返回随机数生成器使用的算法的周期。如果周期不可确定,则返回 BigInteger.ZERO。- 返回:
- BigInteger 期间。
-
isStatistical
public boolean isStatistical()如果随机生成器是使用算术 算法 计算的并且具有统计确定性,则返回 true。- 返回:
- 如果随机生成器是统计的,则为真。
-
isStochastic
public boolean isStochastic()如果使用外部或熵源作为输入计算随机生成器,则返回 true。- 返回:
- 如果随机生成器是随机的,则为真。
-
isHardware
public boolean isHardware()如果随机生成器使用硬件设备 (HRNG) 产生熵输入,则返回 true。- 返回:
- 如果随机生成器是由硬件生成的,则为真。
-
isArbitrarilyJumpable
public boolean isArbitrarilyJumpable()如果随机生成器可以跳到状态循环中任意指定的远点,则返回 true。- 返回:
- 如果随机生成器可以任意跳跃,则为真。
-
isJumpable
public boolean isJumpable()如果随机生成器可以在状态循环中跳到指定的远点,则返回 true。- 返回:
- 如果随机生成器是可跳跃的,则为真。
-
isLeapable
public boolean isLeapable()如果随机生成器是可跳跃的并且可以跳跃到状态循环中非常遥远的点,则返回 true。- 返回:
- 如果随机生成器是可跳跃的,则为真。
-
isSplittable
public boolean isSplittable()如果可以将随机生成器克隆到具有相同属性但在状态循环中更远的单独对象中,则返回 true。- 返回:
- 如果随机生成器是可拆分的,则为真。
-
isStreamable
public boolean isStreamable()如果随机生成器可用于创建Streams个随机数,则返回 true。- 返回:
- 如果随机生成器是流式的,则为真。
-
isDeprecated
public boolean isDeprecated()如果 RandomGenerator(算法)的实现已被标记为弃用,则返回 true。- 实现注意事项:
- 随机数生成器算法随时间演变;将引入新算法,旧算法将失去地位。如果旧算法被认为不适合继续使用,它将被标记为已弃用,以表明它可能会在将来的某个时候被删除。
- 返回:
- 如果 RandomGenerator(算法)的实现已被标记为弃用,则为真
-
create
根据所选的 算法 创建RandomGenerator的实例。- 返回:
RandomGenerator的新实例。
-
create
根据选择的 算法 创建一个RandomGenerator实例,提供起始长种子。如果算法不支持长种子,则使用 create 的无参数形式。- 参数:
seed- 长随机种子值。- 返回:
RandomGenerator的新实例。
-
create
- 参数:
seed- 字节数组随机种子值。- 返回:
RandomGenerator的新实例。- 抛出:
NullPointerException- 如果种子为空。
-