- 封闭接口:
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
来获取密码安全的伪随机数生成器,以供对安全敏感的应用程序使用。
-
内部类总结
-
方法总结
修饰符和类型方法描述copy()
返回一个新的生成器,其内部状态是该生成器的精确副本(因此,如果受到相同系列的操作,它们未来的行为应该是相同的)。default RandomGenerator
复制这个生成器,向前跳转这个生成器,然后返回副本。void
jump()
改变这个伪随机数生成器的状态,以便向前跳跃一个大的固定距离(通常是 264或更多)在其状态周期内。double
返回jump
() 方法在此生成器对象的状态循环内向前跳转的距离。default Stream<RandomGenerator>
jumps()
返回有效无限的新伪随机数生成器流,每个生成器都实现了RandomGenerator
接口。default Stream<RandomGenerator>
jumps
(long streamSize) 返回产生给定streamSize
个新伪随机数生成器的流,每个生成器都实现RandomGenerator
接口。default Stream<RandomGenerator>
rngs()
返回有效无限的新伪随机数生成器流,每个生成器都实现了RandomGenerator
接口。default Stream<RandomGenerator>
rngs
(long streamSize) 返回产生给定streamSize
个新伪随机数生成器的流,每个生成器都实现RandomGenerator
接口。在接口 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
-
方法详情
-
of
- 参数:
name
- 随机数生成器的名称 算法- 返回:
RandomGenerator.JumpableGenerator
的实例- 抛出:
NullPointerException
- 如果名称为空IllegalArgumentException
- 如果找不到指定的算法
-
copy
返回一个新的生成器,其内部状态是该生成器的精确副本(因此,如果受到相同系列的操作,它们未来的行为应该是相同的)。- 返回:
- 作为此生成器副本的新对象
-
jump
void jump()改变这个伪随机数生成器的状态,以便向前跳跃一个大的固定距离(通常是 264或更多)在其状态周期内。 -
jumpDistance
double jumpDistance()返回jump
() 方法在此生成器对象的状态循环内向前跳转的距离。- 返回:
-
默认跳跃距离(作为
double
值)
-
jumps
返回有效无限的新伪随机数生成器流,每个生成器都实现了RandomGenerator
接口。- 实现要求:
-
默认实现产生一个顺序流,在这个生成器上重复调用
copy
() 和jump
(),副本成为流产生的生成器。 - 实现注意事项:
-
允许以等同于
jumps
(Long.MAX_VALUE
) 的方式实现此方法。 - 返回:
-
实现
RandomGenerator
接口的对象流
-
jumps
返回产生给定streamSize
个新伪随机数生成器的流,每个生成器都实现RandomGenerator
接口。- 实现要求:
-
默认实现产生一个顺序流,在这个生成器上重复调用
copy
() 和jump
(),副本成为流产生的生成器。 - 参数:
streamSize
- 要生成的发电机数量- 返回:
-
实现
RandomGenerator
接口的对象流 - 抛出:
IllegalArgumentException
- 如果streamSize
小于零
-
rngs
返回有效无限的新伪随机数生成器流,每个生成器都实现了RandomGenerator
接口。理想情况下,流中的生成器在统计上似乎是独立的。- 指定者:
rngs
在接口RandomGenerator.StreamableGenerator
中- 实现要求:
-
默认实现调用
jumps
()。 - 返回:
-
实现
RandomGenerator
接口的对象流
-
rngs
返回产生给定streamSize
个新伪随机数生成器的流,每个生成器都实现RandomGenerator
接口。理想情况下,流中的生成器在统计上似乎是独立的。- 指定者:
rngs
在接口RandomGenerator.StreamableGenerator
中- 实现要求:
-
默认实现调用
jumps
(streamSize)。 - 参数:
streamSize
- 要生成的发电机数量- 返回:
-
实现
RandomGenerator
接口的对象流 - 抛出:
IllegalArgumentException
- 如果streamSize
小于零
-
copyAndJump
复制这个生成器,向前跳转这个生成器,然后返回副本。- 实现要求:
- 默认实现复制它,跳转然后返回副本。
- 返回:
- 发生跳转之前此生成器对象的副本
-