- 封装接口:
-
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
来获取密码学安全的伪随机数生成器,供安全敏感应用程序使用。
-
Nested Class Summary
Nested classes/interfaces declared in interface java.util.random.RandomGenerator
RandomGenerator.ArbitrarilyJumpableGenerator, RandomGenerator.JumpableGenerator, RandomGenerator.LeapableGenerator, RandomGenerator.SplittableGenerator, RandomGenerator.StreamableGenerator
-
Method Summary
Modifier and TypeMethodDescriptioncopy()
返回一个内部状态与此生成器完全相同的新生成器(因此,如果受到相同一系列操作的影响,它们的未来行为应该是相同的)。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
接口。Methods declared in interface 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
-
Method Details
-
of
- 参数:
-
name
- 随机数生成器的名称算法 - 返回:
-
RandomGenerator.JumpableGenerator
的一个实例 - 抛出:
-
NullPointerException
- 如果名称为null -
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
复制此生成器,将此生成器向前跳转,然后返回副本。- 实现要求:
- 默认实现复制此生成器,跳转然后返回副本。
- 返回:
- 在跳转发生之前此生成器对象的副本
-