public final class SplittableRandom extends Object
SplittableRandom
支持方法用于生产类型的伪随机数int
, long
和double
具有类似用途作为类Random
但在以下方面不同:
split()
构造并返回与当前实例共享不可变状态的新SplitableRandom实例。 然而,以非常高的概率,由两个对象共同生成的值具有与使用单个SplittableRandom
对象的单个线程生成相同数量的值相同的统计特性。 fork/join-style
计算使用随机数可能包括以下形式的建设new Subtask(aSplittableRandom.split()).fork()
。 stream.parallel()
模式下使用上述技术。 SplittableRandom的SplittableRandom
不是加密安全的。 考虑在安全敏感的应用程序中使用SecureRandom
。 此外,默认构造的实例不使用加密随机种子,除非88465688849997 java.util.secureRandomSeed
设置为true
。
Constructor and Description |
---|
SplittableRandom()
创建一个新的SplittableRandom实例,可能会生成与当前程序中任何其他实例统计上独立的值序列;
并且通常可以在程序调用中变化。
|
SplittableRandom(long seed)
使用指定的初始种子创建一个新的SplittableRandom实例。
|
Modifier and Type | Method and Description |
---|---|
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 值
boolean 。
|
double |
nextDouble()
返回零(包括)和一(独占)之间的伪
double 值double。
|
double |
nextDouble(double bound)
返回0.0(含)和指定边界(排除)之间的伪随机
double 值。
|
double |
nextDouble(double origin, double bound)
返回指定的起始(包括)和绑定(排除)之间的伪
double 值double。
|
int |
nextInt()
返回一个伪
int 值
int 。
|
int |
nextInt(int bound)
返回一个伪零符号
int 之间的零(含)和指定的界限(排除)之间的值。
|
int |
nextInt(int origin, int bound)
返回指定的起始点(含)和指定的边界(排除)之间的伪
int 值int。
|
long |
nextLong()
返回一个伪
long 值
long 。
|
long |
nextLong(long bound)
返回零(含)和指定边界(排除)之间的伪
long 值long。
|
long |
nextLong(long origin, long bound)
返回指定的起始点(包括)和指定的绑定(排除)之间的伪
long 值long。
|
SplittableRandom |
split()
构造并返回一个新的SplittableRandom实例,与该实例共享不可变状态。
|
public SplittableRandom(long seed)
seed
- 初始种子
public SplittableRandom()
public SplittableRandom split()
split()
方法进一步拆分两个对象中的一个或两个,并且相同的预期统计属性适用于通过这种递归拆分构造的整个生成器集合。
public int nextInt()
int
值
int
。
int
值
public int nextInt(int bound)
int
值。
bound
- 上限(独占)。
必须是积极的。
int
之间的零(包括)和绑定(独占)
IllegalArgumentException
- 如果
bound
public int nextInt(int origin, int bound)
int
值int。
origin
- 返回的最小值
bound
- 上限(独占)
int
值
IllegalArgumentException
- 如果
origin
大于等于
bound
public long nextLong()
long
值
long
。
long
值
public long nextLong(long bound)
long
在零(含)和指定的界限(排除)之间的值。
bound
- 上限(独占)。
必须是积极的。
long
值
IllegalArgumentException
- 如果
bound
public long nextLong(long origin, long bound)
long
值long。
origin
- 返回的最小值
bound
- 上限(独占)
long
值
IllegalArgumentException
- 如果
origin
大于等于
bound
public double nextDouble()
double
值。
double
之间的零(含)和一(独占)
public double nextDouble(double bound)
double
值。
bound
- 上限(独占)。
必须是积极的。
double
值
IllegalArgumentException
- 如果
bound
public double nextDouble(double origin, double bound)
double
值double。
origin
- 返回的最小值
bound
- 上限(独占)
double
值
IllegalArgumentException
- 如果
origin
大于或等于
bound
public boolean nextBoolean()
boolean
值
boolean
。
boolean
值
public IntStream ints(long streamSize)
streamSize
数
int
值从该发生器和/或一个从它分裂。
streamSize
- 要生成的值的数量
int
值
IllegalArgumentException
- 如果
streamSize
小于零
public IntStream ints()
int
值从这个发生器和/或一个从它分裂。
ints(Long.MAX_VALUE)
。
int
值
public IntStream ints(long streamSize, int randomNumberOrigin, int randomNumberBound)
streamSize
数int
值,该值来自该发生器和/或从其分离;
每个值符合给定的起始(包括)和绑定(排他)。
streamSize
- 要生成的值的数量
randomNumberOrigin
- 每个随机值的起点(含)
randomNumberBound
- 每个随机值的绑定(排他)
int
流(int),每个都有给定的来源(包括)和绑定(排他)
IllegalArgumentException
- 如果
streamSize
小于零,或
randomNumberOrigin
大于或等于
randomNumberBound
public IntStream ints(int randomNumberOrigin, int randomNumberBound)
int
值从这个发生器和/或一个从它分裂;
每个值符合给定的起始(包括)和绑定(排他)。
ints(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)
。
randomNumberOrigin
- 每个随机值的起点(含)
randomNumberBound
- 每个随机值的绑定(排他)
int
的流量
int
,每个都有给定的来源(包括)和绑定(排他)
IllegalArgumentException
- 如果
randomNumberOrigin
大于或等于
randomNumberBound
public LongStream longs(long streamSize)
streamSize
数
long
数值,来自该发生器和/或一次分割。
streamSize
- 要生成的值的数量
long
值
IllegalArgumentException
- 如果
streamSize
小于零
public LongStream longs()
long
值,和/或从其中分离出一个值。
longs(Long.MAX_VALUE)
。
long
值
public LongStream longs(long streamSize, long randomNumberOrigin, long randomNumberBound)
streamSize
数long
值,该值来自该发生器和/或从其分离;
每个值符合给定的起始(包括)和绑定(排他)。
streamSize
- 要生成的值的数量
randomNumberOrigin
- 每个随机值的起点(含)
randomNumberBound
- 每个随机值的绑定(排他)
long
流(long),每个都有给定的来源(包括)和绑定(独占)
IllegalArgumentException
- 如果
streamSize
小于零,或
randomNumberOrigin
大于等于
randomNumberBound
public LongStream longs(long randomNumberOrigin, long randomNumberBound)
long
值从这个发生器和/或一个从它分裂;
每个值符合给定的起始(包括)和绑定(排他)。
longs(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)
。
randomNumberOrigin
- 每个随机值的起点(含)
randomNumberBound
- 每个随机值的绑定(排他)
long
流long,每个都有给定的起源(包括)和绑定(排他)
IllegalArgumentException
- 如果
randomNumberOrigin
大于等于
randomNumberBound
public DoubleStream doubles(long streamSize)
streamSize
数double
值,该值来自该发生器和/或从其分离;
每个值在零(包括)和一(独占)之间。
streamSize
- 要生成的值的数量
double
值
IllegalArgumentException
- 如果
streamSize
小于零
public DoubleStream doubles()
double
值从这个发生器和/或一个从它分裂;
每个值在零(包括)和一(独占)之间。
doubles(Long.MAX_VALUE)
。
double
值
public DoubleStream doubles(long streamSize, double randomNumberOrigin, double randomNumberBound)
streamSize
数量的伪double
值double
来自该发生器和/或从其double
值;
每个值符合给定的起始(包括)和绑定(排他)。
streamSize
- 要生成的值的数量
randomNumberOrigin
- 每个随机值的起点(含)
randomNumberBound
- 每个随机值的绑定(排他)
double
流double,每个都有给定的来源(包括)和绑定(排他)
IllegalArgumentException
- 如果
streamSize
小于零
IllegalArgumentException
- 如果
randomNumberOrigin
大于或等于
randomNumberBound
public DoubleStream doubles(double randomNumberOrigin, double randomNumberBound)
double
值来自该发生器和/或一个从它分裂的值;
每个值符合给定的起始(包括)和绑定(排他)。
doubles(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)
。
randomNumberOrigin
- 每个随机值的起始(含)
randomNumberBound
- 每个随机值的绑定(排他)
double
流double,每个都有给定的来源(包括)和绑定(排他)
IllegalArgumentException
- 如果
randomNumberOrigin
大于等于
randomNumberBound