- 所有父级接口:
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
来获取密码安全的伪随机数生成器,以供对安全敏感的应用程序使用。
-
内部类总结
-
方法总结
修饰符和类型方法描述copy()
返回一个新的生成器,其内部状态是该生成器的精确副本(因此,如果受到相同系列的操作,它们未来的行为应该是相同的)。copyAndJump
(double distance) 复制这个生成器,向前跳转这个生成器,然后返回副本。default void
jump()
改变这个伪随机数生成器的状态,以便向前跳跃一个大的固定距离(通常是 264或更多)在其状态周期内。void
jump
(double distance) 改变这个伪随机数生成器的状态,使其在其状态周期内向前跳转指定的距离。void
jumpPowerOfTwo
(int logDistance) 改变这个伪随机数生成器的状态,以便向前跳转等于 2 的距离logDistance
在其状态周期内。jumps
(double distance) 返回有效无限的新伪随机数生成器流,每个生成器都实现了RandomGenerator.ArbitrarilyJumpableGenerator
接口,通过将此生成器的副本跳跃指定跳跃距离的不同整数倍而产生。jumps
(long streamSize, double distance) 返回产生给定streamSize
数量的新伪随机数生成器的流,每个生成器都实现RandomGenerator.ArbitrarilyJumpableGenerator
接口,通过将此生成器的副本跳跃指定跳跃距离的不同整数倍而产生。default void
leap()
改变这个伪随机数生成器的状态,以便向前跳跃一个非常大的固定距离(通常为 2128或更多)在其状态周期内。在接口 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, jumpDistance, jumps, jumps, rngs, rngs
在接口 java.util.random.RandomGenerator.LeapableGenerator 中声明的方法
copyAndLeap, leapDistance, leaps, leaps
-
方法详情
-
of
- 参数:
name
- 随机数生成器的名称 算法- 返回:
RandomGenerator.ArbitrarilyJumpableGenerator
的实例- 抛出:
NullPointerException
- 如果名称为空IllegalArgumentException
- 如果找不到指定的算法
-
copy
返回一个新的生成器,其内部状态是该生成器的精确副本(因此,如果受到相同系列的操作,它们未来的行为应该是相同的)。- 指定者:
copy
在接口RandomGenerator.JumpableGenerator
中- 指定者:
copy
在接口RandomGenerator.LeapableGenerator
中- 返回:
- 作为此生成器副本的新对象
-
jumpPowerOfTwo
void jumpPowerOfTwo(int logDistance) 改变这个伪随机数生成器的状态,以便向前跳转等于 2 的距离logDistance
在其状态周期内。- 参数:
logDistance
- 在状态周期内向前跳跃的距离的以 2 为底的对数- 抛出:
IllegalArgumentException
- 如果logDistance
为 2logDistance
大于这个发电机的周期
-
jump
void jump(double distance) 改变这个伪随机数生成器的状态,使其在其状态周期内向前跳转指定的距离。- 参数:
distance
- 在状态周期内向前跳转的距离- 抛出:
IllegalArgumentException
- 如果distance
不大于或等于 0.0,或者大于此生成器的周期
-
jump
default void jump()改变这个伪随机数生成器的状态,以便向前跳跃一个大的固定距离(通常是 264或更多)在其状态周期内。使用的距离是方法jumpDistance
() 返回的距离。- 指定者:
jump
在接口RandomGenerator.JumpableGenerator
中- 实现要求:
- 默认实现调用 jump(jumpDistance())。
-
jumps
返回有效无限的新伪随机数生成器流,每个生成器都实现了RandomGenerator.ArbitrarilyJumpableGenerator
接口,通过将此生成器的副本跳跃指定跳跃距离的不同整数倍而产生。- 实现要求:
-
默认实现等效于
jumps
(Long.MAX_VALUE
)。 - 参数:
distance
- 在状态周期内向前跳跃的距离- 返回:
-
实现
RandomGenerator
接口的对象流 - 抛出:
IllegalArgumentException
- 如果distance
不大于或等于 0.0,或者大于此生成器的周期
-
jumps
default Stream <RandomGenerator.ArbitrarilyJumpableGenerator > jumps(long streamSize, double distance) 返回产生给定streamSize
数量的新伪随机数生成器的流,每个生成器都实现RandomGenerator.ArbitrarilyJumpableGenerator
接口,通过将此生成器的副本跳跃指定跳跃距离的不同整数倍而产生。- 实现要求:
- 默认实现等同于 jumps(distance).limit(streamSize)。
- 参数:
streamSize
- 要生成的发电机数量distance
- 在状态周期内向前跳跃的距离- 返回:
-
实现
RandomGenerator
接口的对象流 - 抛出:
IllegalArgumentException
- 如果streamSize
小于零或者如果distance
不大于或等于 0.0,或者大于此生成器的周期
-
leap
default void leap()改变这个伪随机数生成器的状态,以便向前跳跃一个非常大的固定距离(通常为 2128或更多)在其状态周期内。使用的距离是方法leapDistance
() 返回的距离。- 指定者:
leap
在接口RandomGenerator.LeapableGenerator
中
-
copyAndJump
复制这个生成器,向前跳转这个生成器,然后返回副本。- 实现要求:
- 默认实现复制它,跳转(距离)然后返回副本。
- 参数:
distance
- 在状态周期内向前跳跃的距离- 返回:
- 发生跳转之前此生成器对象的副本
- 抛出:
IllegalArgumentException
- 如果distance
不大于或等于 0.0,或者大于此生成器的周期
-