模块 java.base

类 RandomGeneratorFactory<T extends RandomGenerator >

java.lang.Object
java.util.random.RandomGeneratorFactory<T>
类型参数:
T - 创建的随机生成器的类型

public final class RandomGeneratorFactory<T extends RandomGenerator > extends Object
这是一个用于生成特定 算法 的多个随机数生成器的工厂类。 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();
  }
 
RandomGeneratorFactory 还提供描述生成器属性(或属性)的方法,可用于选择随机数生成器 算法 。这些方法通常与 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
参见:
  • 方法详情

    • of

      public static <T extends RandomGenerator > RandomGeneratorFactory <T> of(String  name)
      返回一个 RandomGeneratorFactory ,它可以生成利用 name 算法RandomGenerator 实例。
      实现要求:
      可用性由 RandomGeneratorFactory 使用服务提供者 API 来确定 RandomGenerator 接口的实现。
      类型参数:
      T - RandomGenerator 的子接口生成
      参数:
      name - 随机数生成器的名称 算法
      返回:
      RandomGeneratorFactory RandomGenerator
      抛出:
      NullPointerException - 如果名称为空
      IllegalArgumentException - 如果找不到指定的算法
    • getDefault

      public static RandomGeneratorFactory <RandomGenerator > getDefault()
      返回一个 RandomGeneratorFactory 满足具有状态位大于或等于 64 的算法的最低要求。
      实现要求:
      由于算法会随着时间的推移而改进,因此无法保证此方法会随着时间的推移返回相同的算法。
      返回:
      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()
      返回 算法 用于维持种子状态的位数。
      返回:
      算法 用于维持种子状态的位数。
    • equidistribution

      public int equidistribution()
      返回 算法 的等分布。
      返回:
      算法 的均匀分布。
    • period

      public BigInteger  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

      public T  create()
      根据所选的 算法 创建 RandomGenerator 的实例。
      返回:
      RandomGenerator 的新实例。
    • create

      public T  create(long seed)
      根据选择的 算法 创建一个 RandomGenerator 实例,提供起始长种子。如果算法不支持长种子,则使用 create 的无参数形式。
      参数:
      seed - 长随机种子值。
      返回:
      RandomGenerator 的新实例。
    • create

      public T  create(byte[] seed)
      根据选择的 算法 创建一个 RandomGenerator 的实例,提供起始字节 [] 种子。如果 算法 不支持 byte[] 种子,则使用 create 的无参数形式。
      参数:
      seed - 字节数组随机种子值。
      返回:
      RandomGenerator 的新实例。
      抛出:
      NullPointerException - 如果种子为空。