模块 java.base

接口 RandomGenerator.JumpableGenerator

所有父级接口:
RandomGenerator , RandomGenerator.StreamableGenerator
所有已知的子接口:
RandomGenerator.ArbitrarilyJumpableGenerator , RandomGenerator.LeapableGenerator
封闭接口:
RandomGenerator

public static interface RandomGenerator.JumpableGenerator extends RandomGenerator.StreamableGenerator
该接口旨在为生成伪随机值的对象提供通用协议,并且可以轻松地jump远期,适量(例如 264) 到状态循环中的一个遥远的点。

理想情况下,从单个原始 RandomGenerator.JumpableGenerator 对象迭代跳转产生的所有 RandomGenerator.JumpableGenerator 对象在统计上彼此独立且单独统一。在实践中,人们必须满足于某种近似于独立性和统一性。特别地,一个特定的实现可能假设由 jump() 方法生成的流中的每个生成器用于生成不大于 264或其周期的平方根。建议实现者使用周期至少为 2 的算法127.

提供了执行单个跳转操作的方法,还提供了通过内部状态的迭代复制和跳转从原始生成器生成的生成器流。多线程应用程序的典型策略是创建单个 RandomGenerator.JumpableGenerator 对象,恰好调用其 jump () 方法一次,然后从结果流中分配生成器,每个线程一个。在由 jump () 方法生成的生成器上调用 jump () 通常不是一个好主意,因为结果可能是一个与调用 jump () 方法已经生成的另一个生成器相同的生成器。因此,jumps () 方法的返回类型是 Stream<RandomGenerator> 而不是 Stream<RandomGenerator.JumpableGenerator> ,即使该流中的实际生成器对象可能也实现了 RandomGenerator.JumpableGenerator 接口。

实现 RandomGenerator.JumpableGenerator 的对象通常不是加密安全的。考虑改为使用 SecureRandom 来获取密码安全的伪随机数生成器,以供对安全敏感的应用程序使用。

  • 方法详情

    • of

      返回使用 name 算法RandomGenerator.JumpableGenerator 实例。
      参数:
      name - 随机数生成器的名称 算法
      返回:
      RandomGenerator.JumpableGenerator 的实例
      抛出:
      NullPointerException - 如果名称为空
      IllegalArgumentException - 如果找不到指定的算法
    • copy

      返回一个新的生成器,其内部状态是该生成器的精确副本(因此,如果受到相同系列的操作,它们未来的行为应该是相同的)。
      返回:
      作为此生成器副本的新对象
    • jump

      void jump()
      改变这个伪随机数生成器的状态,以便向前跳跃一个大的固定距离(通常是 264或更多)在其状态周期内。
    • jumpDistance

      double jumpDistance()
      返回 jump () 方法在此生成器对象的状态循环内向前跳转的距离。
      返回:
      默认跳跃距离(作为double值)
    • jumps

      default Stream <RandomGenerator > jumps()
      返回有效无限的新伪随机数生成器流,每个生成器都实现了 RandomGenerator 接口。
      实现要求:
      默认实现产生一个顺序流,在这个生成器上重复调用 copy () 和 jump (),副本成为流产生的生成器。
      实现注意事项:
      允许以等同于 jumps (Long.MAX_VALUE ) 的方式实现此方法。
      返回:
      实现 RandomGenerator 接口的对象流
    • jumps

      default Stream <RandomGenerator > jumps(long streamSize)
      返回产生给定 streamSize 个新伪随机数生成器的流,每个生成器都实现 RandomGenerator 接口。
      实现要求:
      默认实现产生一个顺序流,在这个生成器上重复调用 copy () 和 jump (),副本成为流产生的生成器。
      参数:
      streamSize - 要生成的发电机数量
      返回:
      实现 RandomGenerator 接口的对象流
      抛出:
      IllegalArgumentException - 如果 streamSize 小于零
    • rngs

      default Stream <RandomGenerator > rngs()
      返回有效无限的新伪随机数生成器流,每个生成器都实现了 RandomGenerator 接口。理想情况下,流中的生成器在统计上似乎是独立的。
      指定者:
      rngs 在接口 RandomGenerator.StreamableGenerator
      实现要求:
      默认实现调用jumps ()。
      返回:
      实现 RandomGenerator 接口的对象流
    • rngs

      default Stream <RandomGenerator > rngs(long streamSize)
      返回产生给定 streamSize 个新伪随机数生成器的流,每个生成器都实现 RandomGenerator 接口。理想情况下,流中的生成器在统计上似乎是独立的。
      指定者:
      rngs 在接口 RandomGenerator.StreamableGenerator
      实现要求:
      默认实现调用 jumps (streamSize)。
      参数:
      streamSize - 要生成的发电机数量
      返回:
      实现 RandomGenerator 接口的对象流
      抛出:
      IllegalArgumentException - 如果 streamSize 小于零
    • copyAndJump

      default RandomGenerator  copyAndJump()
      复制这个生成器,向前跳转这个生成器,然后返回副本。
      实现要求:
      默认实现复制它,跳转然后返回副本。
      返回:
      发生跳转之前此生成器对象的副本