模块 java.base

接口 RandomGenerator.ArbitrarilyJumpableGenerator

所有父级接口:
RandomGenerator , RandomGenerator.JumpableGenerator , RandomGenerator.LeapableGenerator , RandomGenerator.StreamableGenerator
封闭接口:
RandomGenerator

public static interface RandomGenerator.ArbitrarilyJumpableGenerator extends RandomGenerator.LeapableGenerator
该接口旨在为生成伪随机值序列的对象提供通用协议,并且可以轻松地向前,任意量,到状态周期中的一个遥远的点。

理想情况下,从单个原始 RandomGenerator.ArbitrarilyJumpableGenerator 对象迭代跳跃生成的所有 RandomGenerator.ArbitrarilyJumpableGenerator 对象在统计上彼此独立且单独统一,前提是它们不遍历状态循环的重叠部分。在实践中,人们必须满足于某种近似于独立性和统一性。特别地,具体的实现可以假定由jump ()方法生成的流中的每个生成器用于生成不大于指定的跳跃距离的多个值。建议实施者使用周期至少为 2 的算法127.

对于许多应用程序,向前跳转 2 的幂或 2 的幂的某个小倍数就足够了,但是这个 2 的幂可能无法表示为 long 值。为避免使用 BigInteger 值作为跳跃距离,改用 double 值。

提供了执行单个跳转操作的方法,还提供了通过内部状态的迭代复制和跳转从原始生成器生成的生成器流。多线程应用程序的典型策略是创建单个 RandomGenerator.ArbitrarilyJumpableGenerator 对象,恰好调用其 jump () 方法一次,然后从结果流中分配生成器,每个线程一个。但是,生成的每个生成器也有类型 RandomGenerator.ArbitrarilyJumpableGenerator ;小心,可以使用不同的跳跃距离以各种方式遍历整个状态循环。

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