- 封闭接口:
RandomGenerator
该接口旨在为生成伪随机值序列的对象提供通用协议,并且不仅可以轻松跳转,还可以轻松跳转。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
来获取密码安全的伪随机数生成器,以供对安全敏感的应用程序使用。
-
内部类总结
-
方法总结
修饰符和类型方法描述copy()
返回一个新的生成器,其内部状态是该生成器的精确副本(因此,如果受到相同系列的操作,它们未来的行为应该是相同的)。复制这个生成器,向前跳跃这个生成器,然后返回副本。void
leap()
改变这个伪随机数生成器的状态,以便向前跳跃一个大的固定距离(通常是 296或更多)在其状态周期内。double
返回leap
() 方法在此生成器对象的状态周期内向前跳跃的距离。default Stream<RandomGenerator.JumpableGenerator>
leaps()
返回有效无限的新伪随机数生成器流,每个生成器都实现了RandomGenerator.JumpableGenerator
接口。default Stream<RandomGenerator.JumpableGenerator>
leaps
(long streamSize) 返回产生给定streamSize
个新伪随机数生成器的流,每个生成器都实现RandomGenerator.JumpableGenerator
接口。在接口 java.util.random.RandomGenerator 中声明的方法
doubles, doubles, doubles, doubles, ints, ints, ints, ints, isDeprecated, longs, longs, longs, longs, nextBoolean, nextBytes, nextDouble, nextDouble, nextDouble, nextExponential, nextFloat, nextFloat, nextFloat, nextGaussian, nextGaussian, nextInt, nextInt, nextInt, nextLong, nextLong, nextLong
在接口 java.util.random.RandomGenerator.JumpableGenerator 中声明的方法
copyAndJump, jump, jumpDistance, jumps, jumps, rngs, rngs
-
方法详情
-
of
- 参数:
name
- 随机数生成器的名称 算法- 返回:
RandomGenerator.LeapableGenerator
的实例- 抛出:
NullPointerException
- 如果名称为空IllegalArgumentException
- 如果找不到指定的算法
-
copy
返回一个新的生成器,其内部状态是该生成器的精确副本(因此,如果受到相同系列的操作,它们未来的行为应该是相同的)。- 指定者:
copy
在接口RandomGenerator.JumpableGenerator
中- 返回:
- 作为此生成器副本的新对象
-
leap
void leap()改变这个伪随机数生成器的状态,以便向前跳跃一个大的固定距离(通常是 296或更多)在其状态周期内。 -
leapDistance
double leapDistance()返回leap
() 方法在此生成器对象的状态周期内向前跳跃的距离。- 返回:
-
默认的跳跃距离(作为
double
值)
-
leaps
返回有效无限的新伪随机数生成器流,每个生成器都实现了RandomGenerator.JumpableGenerator
接口。- 实现要求:
-
默认实现生成一个顺序流,在这个生成器上重复调用
copy
() 和leap
(),副本成为流生成的生成器。 - 实现注意事项:
-
允许以等同于
leaps
(Long.MAX_VALUE
) 的方式实现此方法。 - 返回:
-
实现
RandomGenerator.JumpableGenerator
接口的对象流
-
leaps
返回产生给定streamSize
个新伪随机数生成器的流,每个生成器都实现RandomGenerator.JumpableGenerator
接口。- 实现要求:
-
默认实现生成一个顺序流,在这个生成器上重复调用
copy
() 和leap
(),副本成为流生成的生成器。 - 参数:
streamSize
- 要生成的发电机数量- 返回:
-
实现
RandomGenerator.JumpableGenerator
接口的对象流 - 抛出:
IllegalArgumentException
- 如果streamSize
小于零
-
copyAndLeap
复制这个生成器,向前跳跃这个生成器,然后返回副本。- 实现要求:
- 默认实现复制它,跳转然后返回副本。
- 返回:
- 飞跃发生前此生成器对象的副本
-