- java.lang.Object
-
- java.util.SplittableRandom
-
public final class SplittableRandomextends Object
具有统一伪随机值的生成器,适用于(在其他上下文中)可能生成子任务的孤立并行计算。 类SplittableRandom
支持方法用于生产类型的伪随机数int
,long
,和double
具有类似用途作为类Random
但在以下方面不同:- 一系列生成的值通过DieHarder套件测试随机数生成器的独立性和一致性属性。 (最近使用version 3.31.1进行了验证。)这些测试仅验证某些类型和范围的方法,但类似的属性预计至少也会保留在其他类型和范围内。 句点 (重复之前的任何一系列生成值的长度)至少为2 64 。
- 方法
split()
构造并返回与当前实例不共享可变状态的新SplittableRandom实例。 但是,概率非常高,两个对象共同生成的值具有相同的统计特性,就好像单个线程使用单个SplittableRandom
对象生成相同数量的值一样。 - SplittableRandom的实例不是线程安全的。 它们被设计为跨线程拆分,而不是共享。 例如,使用随机数的
fork/join-style
计算可能包括new Subtask(aSplittableRandom.split()).fork()
形式的new Subtask(aSplittableRandom.split()).fork()
。 - 此类提供了用于生成随机流的其他方法,在
stream.parallel()
模式下使用时采用上述技术。
SplittableRandom
实例不具有加密安全性。 请考虑在安全敏感的应用程序中使用SecureRandom
。 此外,默认构造的实例不使用加密随机种子,除非system propertyjava.util.secureRandomSeed
设置为true
。- 从以下版本开始:
- 1.8
-
-
构造方法摘要
构造方法 构造器 描述 SplittableRandom()
创建一个新的SplittableRandom实例,该实例可能生成统计上独立于当前程序中任何其他实例的值的序列; 并且可能并且通常确实在程序调用之间变化。SplittableRandom(long seed)
使用指定的初始种子创建新的SplittableRandom实例。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 DoubleStream
doubles()
从此生成器返回一个有效无限的伪随机值double
和/或从它生成一个分割; 每个值介于零(包括)和一(不包括)之间。DoubleStream
doubles(double randomNumberOrigin, double randomNumberBound)
从该生成器返回一个有效无限的伪随机double
流和/或从它生成的一个分裂; 每个值符合给定的原点(包括)和绑定(不包括)。DoubleStream
doubles(long streamSize)
返回一个流,该流从该生成器生成给定的streamSize
个伪随机double
值和/或从中生成一个分裂; 每个值介于零(包括)和一(不包括)之间。DoubleStream
doubles(long streamSize, double randomNumberOrigin, double randomNumberBound)
返回一个流,该流从该生成器生成给定的streamSize
个伪随机数double
值和/或从中生成一个分裂; 每个值符合给定的原点(包括)和绑定(不包括)。IntStream
ints()
从此生成器返回有效无限的伪随机int
流和/或从中生成一个分裂的值。IntStream
ints(int randomNumberOrigin, int randomNumberBound)
从该生成器返回一个有效无限的伪随机int
流和/或从它生成的一个分裂; 每个值符合给定的原点(包括)和绑定(不包括)。IntStream
ints(long streamSize)
返回一个流,该流从此生成器生成给定的streamSize
个伪随机int
值和/或从中生成一个分裂。IntStream
ints(long streamSize, int randomNumberOrigin, int randomNumberBound)
返回一个流,该流从该生成器生成给定的streamSize
个伪随机int
值和/或从中生成一个分裂; 每个值符合给定的原点(包括)和绑定(不包括)。LongStream
longs()
从此生成器返回一个有效无限的伪随机long
流和/或从中生成一个分裂的值。LongStream
longs(long streamSize)
返回一个流,该流从此生成器生成给定的streamSize
个伪随机数long
值和/或从中生成一个分裂。LongStream
longs(long randomNumberOrigin, long randomNumberBound)
从该生成器返回一个有效无限的伪随机long
值流和/或从它生成一个分裂; 每个值符合给定的原点(包括)和绑定(不包括)。LongStream
longs(long streamSize, long randomNumberOrigin, long randomNumberBound)
返回一个流,该流从该生成器生成给定的streamSize
个伪随机long
值和/或从中生成一个分裂; 每个值符合给定的原点(包括)和绑定(不包括)。boolean
nextBoolean()
返回伪随机数boolean
。void
nextBytes(byte[] bytes)
使用生成的伪随机字节填充用户提供的字节数组。double
nextDouble()
返回零(包括)和一(不包括)之间的伪随机数double
。double
nextDouble(double bound)
返回0.0(包括)和指定边界(不包括)之间的伪随机数double
。double
nextDouble(double origin, double bound)
返回指定原点(包括)和bound(不包括)之间的伪随机值double
。int
nextInt()
返回伪随机数int
。int
nextInt(int bound)
返回零(包括)和指定边界(不包括)之间的伪随机数int
。int
nextInt(int origin, int bound)
返回指定原点(包括)与指定边界(不包括)之间的伪随机数int
。long
nextLong()
返回伪随机数long
。long
nextLong(long bound)
返回零(包括)和指定边界(不包括)之间的伪随机数long
。long
nextLong(long origin, long bound)
返回指定原点(包括)与指定边界(不包括)之间的伪随机数long
。SplittableRandom
split()
构造并返回一个新的SplittableRandom实例,该实例与该实例不共享可变状态。
-
-
-
方法详细信息
-
split
public SplittableRandom split()
构造并返回一个新的SplittableRandom实例,该实例与该实例不共享可变状态。 但是,具有非常高的概率,由两个对象共同生成的值集具有相同的统计属性,就好像单个线程使用单个SplittableRandom对象生成相同数量的值一样。 可以使用split()
方法进一步分割两个对象中的任一个或两个,并且相同的预期统计属性适用于由这种递归分割构造的整个生成器集。- 结果
- 新的SplittableRandom实例
-
nextBytes
public void nextBytes(byte[] bytes)
使用生成的伪随机字节填充用户提供的字节数组。- 参数
-
bytes
- 用伪随机字节填充的字节数组 - 异常
-
NullPointerException
- 如果bytes为null - 从以下版本开始:
- 10
-
nextInt
public int nextInt()
返回伪随机数int
。- 结果
- 伪随机数
int
-
nextInt
public int nextInt(int bound)
返回零(包括)和指定边界(不包括)之间的伪随机数int
。- 参数
-
bound
- 上限(不包括)。 必须是积极的。 - 结果
- 伪随机数
int
在零(包括)和绑定(不包括)之间的值 - 异常
-
IllegalArgumentException
- 如果bound
不是正面的
-
nextInt
public int nextInt(int origin, int bound)
返回指定原点(包括)与指定边界(不包括)之间的伪随机数int
。- 参数
-
origin
- 返回的值最小 -
bound
- 上限(独家) - 结果
- 原始(包括)和绑定(独占)之间的伪随机数
int
- 异常
-
IllegalArgumentException
- 如果origin
大于或等于bound
-
nextLong
public long nextLong()
返回伪随机数long
。- 结果
- 伪随机值
long
-
nextLong
public long nextLong(long bound)
返回零(包括)和指定边界(不包括)之间的伪随机数long
。- 参数
-
bound
- 上限(不包括)。 必须是积极的。 - 结果
- 伪随机数
long
在零(包括)和绑定(不包括)之间的值 - 异常
-
IllegalArgumentException
- 如果bound
不是正数
-
nextLong
public long nextLong(long origin, long bound)
返回指定原点(包括)与指定边界(不包括)之间的伪随机数long
。- 参数
-
origin
- 返回的值最小 -
bound
- 上限(独占) - 结果
- 原始(包括)和绑定(不包括)之间的伪随机数
long
值 - 异常
-
IllegalArgumentException
- 如果origin
大于或等于bound
-
nextDouble
public double nextDouble()
返回零(包括)和一(不包括)之间的伪随机数double
。- 结果
- 伪随机数
double
在零(包括)和一(不包括)之间的值
-
nextDouble
public double nextDouble(double bound)
返回介于0.0(含)和指定边界(不包括)之间的伪随机数double
。- 参数
-
bound
- 上限(不包括)。 必须是积极的。 - 结果
- 伪随机数
double
在零(包括)和绑定(不包括)之间的值 - 异常
-
IllegalArgumentException
- 如果bound
不是正数
-
nextDouble
public double nextDouble(double origin, double bound)
返回指定原点(包括)和bound(不包括)之间的伪随机值double
。- 参数
-
origin
- 返回的值最小 -
bound
- 上限(独家) - 结果
- 原始(包括)和绑定(不包括)之间的伪随机数
double
值 - 异常
-
IllegalArgumentException
- 如果origin
大于或等于bound
-
nextBoolean
public boolean nextBoolean()
返回伪随机数boolean
。- 结果
- 伪随机数
boolean
-
ints
public IntStream ints(long streamSize)
返回一个流,该流从此生成器生成给定的streamSize
个伪随机int
值和/或从中生成一个分裂。- 参数
-
streamSize
- 要生成的值的数量 - 结果
- 伪随机数值流
int
- 异常
-
IllegalArgumentException
- 如果streamSize
小于零
-
ints
public IntStream ints()
从此生成器返回一个有效无限的伪随机int
值流和/或从中生成一个分裂。- Implementation Note:
- 实现此方法等同于
ints(Long.MAX_VALUE)
。 - 结果
- 伪随机数值流
int
-
ints
public IntStream ints(long streamSize, int randomNumberOrigin, int randomNumberBound)
返回一个流,该流从该生成器生成给定的streamSize
个伪随机int
值和/或从中生成一个分裂; 每个值符合给定的原点(包括)和绑定(不包括)。- 参数
-
streamSize
- 要生成的值的数量 -
randomNumberOrigin
- 每个随机值的原点(包括) -
randomNumberBound
- 每个随机值的绑定(不包括) - 结果
- 一个伪随机值
int
值,每个值都有给定的原点(包括)和绑定(不包括) - 异常
-
IllegalArgumentException
- 如果streamSize
小于零,或者randomNumberOrigin
大于或等于randomNumberBound
-
ints
public IntStream ints(int randomNumberOrigin, int randomNumberBound)
从此生成器返回一个实际上无限制的伪随机int
值流和/或从中生成一个分裂; 每个值符合给定的原点(包括)和绑定(不包括)。- Implementation Note:
- 实现此方法等同于
ints(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)
。 - 参数
-
randomNumberOrigin
- 每个随机值的原点(包括) -
randomNumberBound
- 每个随机值的绑定(不包括) - 结果
- 伪随机
int
值的流,每个值具有给定的原点(包括)和绑定(不包括) - 异常
-
IllegalArgumentException
- 如果randomNumberOrigin
大于或等于randomNumberBound
-
longs
public LongStream longs(long streamSize)
返回一个流,该流从此生成器生成给定的streamSize
个伪随机数long
值和/或从中生成一个分裂。- 参数
-
streamSize
- 要生成的值的数量 - 结果
- 伪随机数
long
的流 - 异常
-
IllegalArgumentException
- 如果streamSize
小于零
-
longs
public LongStream longs()
从此生成器返回一个实际上无限制的伪随机值long
和/或从它生成一个分割。- Implementation Note:
- 实现此方法等同于
longs(Long.MAX_VALUE)
。 - 结果
- 伪随机值
long
的流
-
longs
public LongStream longs(long streamSize, long randomNumberOrigin, long randomNumberBound)
返回一个流,该流从该生成器生成给定的streamSize
个伪随机long
值和/或从中生成一个分裂; 每个值符合给定的原点(包括)和绑定(不包括)。- 参数
-
streamSize
- 要生成的值的数量 -
randomNumberOrigin
- 每个随机值的原点(包括) -
randomNumberBound
- 每个随机值的绑定(不包括) - 结果
- 一个伪随机数
long
值的流,每个值都有给定的原点(包括)和绑定(不包括) - 异常
-
IllegalArgumentException
- 如果streamSize
小于零,或者randomNumberOrigin
大于或等于randomNumberBound
-
longs
public LongStream longs(long randomNumberOrigin, long randomNumberBound)
从该生成器返回一个有效无限的伪随机long
流和/或从它生成的一个分裂; 每个值符合给定的原点(包括)和绑定(不包括)。- Implementation Note:
- 实现此方法等同于
longs(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)
。 - 参数
-
randomNumberOrigin
- 每个随机值的原点(包括) -
randomNumberBound
- 每个随机值的绑定(不包括) - 结果
- 伪随机
long
值的流,每个值都具有给定的原点(包括)和绑定(不包括) - 异常
-
IllegalArgumentException
- 如果randomNumberOrigin
大于或等于randomNumberBound
-
doubles
public DoubleStream doubles(long streamSize)
返回一个流,该流从该生成器生成给定的streamSize
个伪随机double
值和/或从中生成一个分裂; 每个值介于零(包括)和一(不包括)之间。- 参数
-
streamSize
- 要生成的值的数量 - 结果
-
double
值的流 - 异常
-
IllegalArgumentException
- 如果streamSize
小于零
-
doubles
public DoubleStream doubles()
从该生成器返回一个有效无限的伪随机double
流和/或从它生成的一个分裂; 每个值介于零(包括)和一(不包括)之间。- Implementation Note:
- 实现此方法等同于
doubles(Long.MAX_VALUE)
。 - 结果
- 一组伪随机值
double
-
doubles
public DoubleStream doubles(long streamSize, double randomNumberOrigin, double randomNumberBound)
返回产生所述给定流streamSize
数的伪随机的double
从该发电机和/或从它一个分割值; 每个值符合给定的原点(包括)和绑定(不包括)。- 参数
-
streamSize
- 要生成的值的数量 -
randomNumberOrigin
- 每个随机值的原点(包括) -
randomNumberBound
- 每个随机值的绑定(不包括) - 结果
- 伪随机
double
值的流,每个值具有给定的原点(包括)和绑定(不包括) - 异常
-
IllegalArgumentException
- 如果streamSize
小于零,或者randomNumberOrigin
大于或等于randomNumberBound
-
doubles
public DoubleStream doubles(double randomNumberOrigin, double randomNumberBound)
从此生成器返回一个有效无限的伪随机值double
和/或从它生成一个分割; 每个值符合给定的原点(包括)和绑定(不包括)。- Implementation Note:
- 实现此方法等同于
doubles(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)
。 - 参数
-
randomNumberOrigin
- 每个随机值的原点(包括) -
randomNumberBound
- 每个随机值的边界(不包括) - 结果
- 伪随机
double
值的流,每个值具有给定的原点(包括)和绑定(不包括) - 异常
-
IllegalArgumentException
- 如果randomNumberOrigin
大于或等于randomNumberBound
-
-