- java.lang.Object
-
- java.util.SplittableRandom
-
public final class SplittableRandom extends 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实例。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 DoubleStreamdoubles()从此生成器返回一个有效无限的伪随机值double和/或从它生成一个分割; 每个值介于零(包括)和一(不包括)之间。DoubleStreamdoubles(double randomNumberOrigin, double randomNumberBound)从该生成器返回一个有效无限的伪随机double流和/或从它生成的一个分裂; 每个值符合给定的原点(包括)和绑定(不包括)。DoubleStreamdoubles(long streamSize)返回一个流,该流从该生成器生成给定的streamSize个伪随机double值和/或从中生成一个分裂; 每个值介于零(包括)和一(不包括)之间。DoubleStreamdoubles(long streamSize, double randomNumberOrigin, double randomNumberBound)返回一个流,该流从该生成器生成给定的streamSize个伪随机数double值和/或从中生成一个分裂; 每个值符合给定的原点(包括)和绑定(不包括)。IntStreamints()从此生成器返回有效无限的伪随机int流和/或从中生成一个分裂的值。IntStreamints(int randomNumberOrigin, int randomNumberBound)从该生成器返回一个有效无限的伪随机int流和/或从它生成的一个分裂; 每个值符合给定的原点(包括)和绑定(不包括)。IntStreamints(long streamSize)返回一个流,该流从此生成器生成给定的streamSize个伪随机int值和/或从中生成一个分裂。IntStreamints(long streamSize, int randomNumberOrigin, int randomNumberBound)返回一个流,该流从该生成器生成给定的streamSize个伪随机int值和/或从中生成一个分裂; 每个值符合给定的原点(包括)和绑定(不包括)。LongStreamlongs()从此生成器返回一个有效无限的伪随机long流和/或从中生成一个分裂的值。LongStreamlongs(long streamSize)返回一个流,该流从此生成器生成给定的streamSize个伪随机数long值和/或从中生成一个分裂。LongStreamlongs(long randomNumberOrigin, long randomNumberBound)从该生成器返回一个有效无限的伪随机long值流和/或从它生成一个分裂; 每个值符合给定的原点(包括)和绑定(不包括)。LongStreamlongs(long streamSize, long randomNumberOrigin, long randomNumberBound)返回一个流,该流从该生成器生成给定的streamSize个伪随机long值和/或从中生成一个分裂; 每个值符合给定的原点(包括)和绑定(不包括)。booleannextBoolean()返回伪随机数boolean。voidnextBytes(byte[] bytes)使用生成的伪随机字节填充用户提供的字节数组。doublenextDouble()返回零(包括)和一(不包括)之间的伪随机数double。doublenextDouble(double bound)返回0.0(包括)和指定边界(不包括)之间的伪随机数double。doublenextDouble(double origin, double bound)返回指定原点(包括)和bound(不包括)之间的伪随机值double。intnextInt()返回伪随机数int。intnextInt(int bound)返回零(包括)和指定边界(不包括)之间的伪随机数int。intnextInt(int origin, int bound)返回指定原点(包括)与指定边界(不包括)之间的伪随机数int。longnextLong()返回伪随机数long。longnextLong(long bound)返回零(包括)和指定边界(不包括)之间的伪随机数long。longnextLong(long origin, long bound)返回指定原点(包括)与指定边界(不包括)之间的伪随机数long。SplittableRandomsplit()构造并返回一个新的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
-
-