模块 java.base

接口 RandomGenerator.LeapableGenerator

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

public static interface RandomGenerator.LeapableGenerator extends RandomGenerator.JumpableGenerator
该接口旨在为生成伪随机值序列的对象提供通用协议,并且不仅可以轻松跳转,还可以轻松跳转。leap远期,大量(例如 2128), 到状态周期中一个非常遥远的点。通常,人们会通过从单个原始 RandomGenerator.LeapableGenerator 对象迭代跳跃来构造一系列 RandomGenerator.LeapableGenerator 对象,然后通过迭代跳跃为每个这样的对象生成一个对象的子系列。 leaping 和 jumping 之间在概念上几乎没有区别,但通常 leap 会是状态循环中的非常长的跳跃(可能是距离 2128或者)。

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

提供了执行单个跳跃操作的方法,还提供了通过内部状态的迭代复制和跳跃从原始生成器生成的生成器流。生成的生成器必须实现 RandomGenerator.JumpableGenerator 接口,但不需要实现 RandomGenerator.LeapableGenerator 接口。多线程应用程序的典型策略是创建单个 RandomGenerator.LeapableGenerator 对象,恰好调用其 leaps 方法一次,然后从结果流中分配生成器,每个线程一个。然后调用每个此类生成器的 jump () 方法来生成生成器对象的子流。

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