Module java.base
Package java.util.random

Interface RandomGenerator.JumpableGenerator

所有超级接口:
RandomGenerator, RandomGenerator.StreamableGenerator
所有已知子接口:
RandomGenerator.ArbitrarilyJumpableGenerator, RandomGenerator.LeapableGenerator
封装接口:
RandomGenerator

public static interface RandomGenerator.JumpableGenerator extends RandomGenerator.StreamableGenerator
该接口旨在为生成伪随机值并可以轻松向前“跳跃”(例如,264)到状态周期中的远点的对象提供一个通用协议。

理想情况下,通过从单个原始RandomGenerator.JumpableGenerator对象进行迭代跳跃生成的所有对象在统计上彼此独立且各自均匀。实际上,人们必须接受对独立性和均匀性的某种近似。特别地,特定实现可以假定由jump()方法生成的流中的每个生成器用于生成的值数量不超过264或其周期的平方根。建议实现者使用周期至少为2127的算法。

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

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

  • Method Details

    • of

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

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

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

      double jumpDistance()
      返回此生成器对象的jump()方法将向前跳跃的距离。
      返回:
      默认跳跃距离(作为double值)
    • jumps

      default Stream<RandomGenerator> jumps()
      返回一个有效无限的新伪随机数生成器流,每个生成器都实现了RandomGenerator接口。
      实现要求:
      默认实现生成一个顺序流,重复调用此生成器上的copy()和jump(),并且副本成为流产生的生成器。
      实现说明:
      可以以等效于jumpsLong.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()
      复制此生成器,将此生成器向前跳转,然后返回副本。
      实现要求:
      默认实现复制此生成器,跳转然后返回副本。
      返回:
      在跳转发生之前此生成器对象的副本