java.lang.Object
java.util.SplittableRandom
- 所有已实现的接口:
RandomGenerator
,RandomGenerator.SplittableGenerator
,RandomGenerator.StreamableGenerator
public final class SplittableRandom extends Object implements RandomGenerator , RandomGenerator.SplittableGenerator
统一伪随机值的生成器(周期为 264) 适用于(在其他上下文中)可能生成子任务的孤立并行计算。类
SplittableRandom
支持生成类型为 int
、 long
和 double
的伪随机数的方法,其用法与类 Random
类似,但在以下方面有所不同:
- 一系列生成的值通过了 DieHarder 套件测试随机数生成器的独立性和均匀性属性。 (最近使用 版本 3.31.1 进行了验证。)这些测试仅验证了某些类型和范围的方法,但类似的属性预计也适用于其他类型和范围,至少近似地适用于其他类型。 period(重复之前任何一系列生成值的长度)是 264.
- 方法
split()
构造并返回一个新的 SplittableRandom 实例,该实例与当前实例不共享任何可变状态。但是,这两个对象共同生成的值很有可能具有相同的统计属性,就好像单个线程使用单个SplittableRandom
对象生成相同数量的值一样。 - SplittableRandom 的实例是 not 线程安全的。它们被设计为跨线程拆分,而不是共享。例如,使用随机数的
fork/join-style
计算可能包括new Subtask(aSplittableRandom.split()).fork()
形式的构造。 - 此类提供用于生成随机流的其他方法,这些方法在
stream.parallel()
模式下使用时采用上述技术。
SplittableRandom
的实例不是加密安全的。考虑在对安全敏感的应用程序中使用 SecureRandom
。此外,默认构造的实例不使用加密随机种子,除非 系统属性 java.util.secureRandomSeed
设置为 true
。
- 自从:
- 1.8
-
内部类总结
-
构造方法总结
构造方法描述创建一个新的 SplittableRandom 实例,该实例可能会生成在统计上独立于当前程序中任何其他实例的值序列;并且可能并且通常确实会因程序调用而异。SplittableRandom
(long seed) 使用指定的初始种子创建一个新的 SplittableRandom 实例。 -
方法总结
修饰符和类型方法描述doubles()
从该生成器和/或从中返回一个有效的无限伪随机double
值流;每个值都在零(含)和一(不含)之间。doubles
(double randomNumberOrigin, double randomNumberBound) 从该生成器和/或从中返回一个有效的无限伪随机double
值流;每个值都符合给定的起源(包括)和边界(不包括)。doubles
(long streamSize) 返回一个流,该流产生给定的streamSize
伪随机数double
值,来自该生成器和/或从中分离出一个值;每个值都在零(含)和一(不含)之间。doubles
(long streamSize, double randomNumberOrigin, double randomNumberBound) 返回一个流,该流产生给定的streamSize
伪随机数double
值,来自该生成器和/或从中分离出一个值;每个值都符合给定的起源(包括)和边界(不包括)。ints()
从该生成器和/或从中返回一个有效的无限伪随机int
值流。ints
(int randomNumberOrigin, int randomNumberBound) 从这个生成器和/或从中返回一个有效的无限伪随机流int
值;每个值都符合给定的起源(包括)和边界(不包括)。ints
(long streamSize) 返回一个流,该流产生给定的streamSize
伪随机数int
值,来自该生成器和/或从中分离出的一个值。ints
(long streamSize, int randomNumberOrigin, int randomNumberBound) 返回一个流,该流产生给定的streamSize
伪随机数int
值,来自该生成器和/或从中分离出一个值;每个值都符合给定的起源(包括)和边界(不包括)。longs()
从该生成器和/或从中返回一个有效的无限伪随机long
值流。longs
(long streamSize) 返回一个流,该流产生给定的streamSize
伪随机数long
值,来自此生成器和/或从中分离出一个值。longs
(long randomNumberOrigin, long randomNumberBound) 从该生成器和/或从中返回一个有效的无限伪随机流long
值;每个值都符合给定的起源(包括)和边界(不包括)。longs
(long streamSize, long randomNumberOrigin, long randomNumberBound) 返回一个流,该流产生给定的streamSize
伪随机数long
值,来自该生成器和/或从中分离出一个值;每个值都符合给定的起源(包括)和边界(不包括)。void
nextBytes
(byte[] bytes) 使用从 -128(含)和 127(含)之间的值范围内均匀随机选择的生成字节值填充用户提供的字节数组。long
nextLong()
返回伪随机选择的long
值。split()
构造并返回一个新的 SplittableRandom 实例,该实例不与该实例共享任何可变状态。返回一个新的伪随机数生成器,从这个生成器中分离出来,它实现了RandomGenerator
和RandomGenerator.SplittableGenerator
接口。splits()
返回有效无限的新伪随机数生成器流,每个生成器都实现了RandomGenerator.SplittableGenerator
接口。splits
(long streamSize) 返回产生给定streamSize
个新伪随机数生成器的流,每个生成器都实现RandomGenerator.SplittableGenerator
接口。splits
(long streamSize, RandomGenerator.SplittableGenerator source) 返回产生给定streamSize
个新伪随机数生成器的流,每个生成器都实现RandomGenerator.SplittableGenerator
接口。返回有效无限的新伪随机数生成器流,每个生成器都实现了RandomGenerator.SplittableGenerator
接口。在类 java.lang.Object 中声明的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
在接口 java.util.random.RandomGenerator 中声明的方法
isDeprecated, nextBoolean, nextDouble, nextDouble, nextDouble, nextExponential, nextFloat, nextFloat, nextFloat, nextGaussian, nextGaussian, nextInt, nextInt, nextInt, nextLong, nextLong
在接口 java.util.random.RandomGenerator.SplittableGenerator 中声明的方法
rngs, rngs
-
构造方法详细信息
-
SplittableRandom
public SplittableRandom(long seed) 使用指定的初始种子创建一个新的 SplittableRandom 实例。在同一程序中使用相同种子创建的 SplittableRandom 实例会生成相同的值序列。- 参数:
seed
- 初始种子
-
SplittableRandom
public SplittableRandom()创建一个新的 SplittableRandom 实例,该实例可能会生成在统计上独立于当前程序中任何其他实例的值序列;并且可能并且通常确实会因程序调用而异。
-
-
方法详情
-
split
构造并返回一个新的 SplittableRandom 实例,该实例不与该实例共享任何可变状态。但是,这两个对象共同生成的值集很有可能具有相同的统计属性,就好像由单个线程使用单个 SplittableRandom 对象生成相同数量的值一样。可以使用split()
方法进一步拆分两个对象中的一个或两个对象,并且相同的预期统计属性适用于通过这种递归拆分构造的整个生成器集。- 指定者:
split
在接口RandomGenerator.SplittableGenerator
中- 返回:
- 新的 SplittableRandom 实例
-
split
返回一个新的伪随机数生成器,从这个生成器中分离出来,它实现了RandomGenerator
和RandomGenerator.SplittableGenerator
接口。- 指定者:
split
在接口RandomGenerator.SplittableGenerator
中- 参数:
source
- 一个RandomGenerator.SplittableGenerator
实例,用于代替这个实例作为伪随机位的来源,用于初始化新位的状态。- 返回:
-
实现
RandomGenerator
和RandomGenerator.SplittableGenerator
接口的对象 - 抛出:
NullPointerException
- 如果源为空- 自从:
- 17
-
nextLong
public long nextLong()从接口RandomGenerator
复制的描述返回伪随机选择的long
值。- 指定者:
nextLong
在接口RandomGenerator
中- 返回:
-
伪随机选择的
long
值
-
nextBytes
public void nextBytes(byte[] bytes) 使用从 -128(含)和 127(含)之间的值范围内均匀随机选择的生成字节值填充用户提供的字节数组。- 指定者:
nextBytes
在接口RandomGenerator
中- 参数:
bytes
- 用伪随机字节填充的字节数组- 抛出:
NullPointerException
- 如果字节为空- 自从:
- 10
-
splits
返回有效无限的新伪随机数生成器流,每个生成器都实现了RandomGenerator.SplittableGenerator
接口。该伪随机数生成器可用作伪随机位的来源,用于初始化新位的状态。
- 指定者:
splits
在接口RandomGenerator.SplittableGenerator
中- 实现要求:
-
默认实现调用
splits(this)
。 - 返回:
RandomGenerator.SplittableGenerator
对象流- 自从:
- 17
-
splits
返回产生给定streamSize
个新伪随机数生成器的流,每个生成器都实现RandomGenerator.SplittableGenerator
接口。该伪随机数生成器可用作伪随机位的来源,用于初始化新位的状态。
- 指定者:
splits
在接口RandomGenerator.SplittableGenerator
中- 实现要求:
- 参数:
streamSize
- 要生成的值的数量- 返回:
RandomGenerator.SplittableGenerator
对象流- 抛出:
IllegalArgumentException
- 如果streamSize
小于零- 自从:
- 17
-
splits
public Stream <RandomGenerator.SplittableGenerator > splits(RandomGenerator.SplittableGenerator source) 返回有效无限的新伪随机数生成器流,每个生成器都实现了RandomGenerator.SplittableGenerator
接口。- 指定者:
splits
在接口RandomGenerator.SplittableGenerator
中- 实现要求:
- 参数:
source
- 一个RandomGenerator.SplittableGenerator
实例,用于代替这个实例作为伪随机位的来源,用于初始化新位的状态。- 返回:
RandomGenerator.SplittableGenerator
对象流- 抛出:
NullPointerException
- 如果源为空- 自从:
- 17
-
splits
public Stream <RandomGenerator.SplittableGenerator > splits(long streamSize, RandomGenerator.SplittableGenerator source) 返回产生给定streamSize
个新伪随机数生成器的流,每个生成器都实现RandomGenerator.SplittableGenerator
接口。- 指定者:
splits
在接口RandomGenerator.SplittableGenerator
中- 实现要求:
- 参数:
streamSize
- 要生成的值的数量source
- 一个RandomGenerator.SplittableGenerator
实例,用于代替这个实例作为伪随机位的来源,用于初始化新位的状态。- 返回:
RandomGenerator.SplittableGenerator
对象流- 抛出:
NullPointerException
- 如果源为空IllegalArgumentException
- 如果streamSize
小于零- 自从:
- 17
-
ints
返回一个流,该流产生给定的streamSize
伪随机数int
值,来自该生成器和/或从中分离出的一个值。- 指定者:
ints
在接口RandomGenerator
中- 参数:
streamSize
- 要生成的值的数量- 返回:
-
伪随机
int
值流 - 抛出:
IllegalArgumentException
- 如果streamSize
小于零
-
ints
从该生成器和/或从中返回一个有效的无限伪随机int
值流。- 指定者:
ints
在接口RandomGenerator
中- 实现注意事项:
-
此方法的实现等效于
ints(Long.MAX_VALUE)
。 - 返回:
-
伪随机
int
值流
-
ints
返回一个流,该流产生给定的streamSize
伪随机数int
值,来自该生成器和/或从中分离出一个值;每个值都符合给定的起源(包括)和边界(不包括)。- 指定者:
ints
在接口RandomGenerator
中- 参数:
streamSize
- 要生成的值的数量randomNumberOrigin
- 每个随机值的原点(含)randomNumberBound
- 每个随机值的边界(不包括)- 返回:
-
伪随机
int
值流,每个值都具有给定的原点(包括)和边界(不包括) - 抛出:
IllegalArgumentException
- 如果streamSize
小于零,或者randomNumberOrigin
大于或等于randomNumberBound
-
ints
从这个生成器和/或从中返回一个有效的无限伪随机流int
值;每个值都符合给定的起源(包括)和边界(不包括)。- 指定者:
ints
在接口RandomGenerator
中- 实现注意事项:
-
此方法的实现等效于
ints(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)
。 - 参数:
randomNumberOrigin
- 每个随机值的原点(含)randomNumberBound
- 每个随机值的边界(不包括)- 返回:
-
伪随机
int
值流,每个值都具有给定的原点(包括)和边界(不包括) - 抛出:
IllegalArgumentException
- 如果randomNumberOrigin
大于或等于randomNumberBound
-
longs
返回一个流,该流产生给定的streamSize
伪随机数long
值,来自此生成器和/或从中分离出一个值。- 指定者:
longs
在接口RandomGenerator
中- 参数:
streamSize
- 要生成的值的数量- 返回:
-
伪随机
long
值流 - 抛出:
IllegalArgumentException
- 如果streamSize
小于零
-
longs
从该生成器和/或从中返回一个有效的无限伪随机long
值流。- 指定者:
longs
在接口RandomGenerator
中- 实现注意事项:
-
此方法实现为等同于
longs(Long.MAX_VALUE)
。 - 返回:
-
伪随机
long
值流
-
longs
返回一个流,该流产生给定的streamSize
伪随机数long
值,来自该生成器和/或从中分离出一个值;每个值都符合给定的起源(包括)和边界(不包括)。- 指定者:
longs
在接口RandomGenerator
中- 参数:
streamSize
- 要生成的值的数量randomNumberOrigin
- 每个随机值的原点(含)randomNumberBound
- 每个随机值的边界(不包括)- 返回:
-
伪随机
long
值流,每个值都具有给定的原点(包括)和边界(不包括) - 抛出:
IllegalArgumentException
- 如果streamSize
小于零,或者randomNumberOrigin
大于或等于randomNumberBound
-
longs
从该生成器和/或从中返回一个有效的无限伪随机流long
值;每个值都符合给定的起源(包括)和边界(不包括)。- 指定者:
longs
在接口RandomGenerator
中- 实现注意事项:
-
此方法实现为等同于
longs(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)
。 - 参数:
randomNumberOrigin
- 每个随机值的原点(含)randomNumberBound
- 每个随机值的边界(不包括)- 返回:
-
伪随机
long
值流,每个值都具有给定的原点(包括)和边界(不包括) - 抛出:
IllegalArgumentException
- 如果randomNumberOrigin
大于或等于randomNumberBound
-
doubles
返回一个流,该流产生给定的streamSize
伪随机数double
值,来自该生成器和/或从中分离出一个值;每个值都在零(含)和一(不含)之间。- 指定者:
doubles
在接口RandomGenerator
中- 参数:
streamSize
- 要生成的值的数量- 返回:
double
值流- 抛出:
IllegalArgumentException
- 如果streamSize
小于零
-
doubles
从该生成器和/或从中返回一个有效的无限伪随机double
值流;每个值都在零(含)和一(不含)之间。- 指定者:
doubles
在接口RandomGenerator
中- 实现注意事项:
-
此方法实现为等同于
doubles(Long.MAX_VALUE)
。 - 返回:
-
伪随机
double
值流
-
doubles
返回一个流,该流产生给定的streamSize
伪随机数double
值,来自该生成器和/或从中分离出一个值;每个值都符合给定的起源(包括)和边界(不包括)。- 指定者:
doubles
在接口RandomGenerator
中- 参数:
streamSize
- 要生成的值的数量randomNumberOrigin
- 每个随机值的原点(含)randomNumberBound
- 每个随机值的边界(不包括)- 返回:
-
伪随机
double
值流,每个值都具有给定的原点(包括)和边界(不包括) - 抛出:
IllegalArgumentException
- 如果streamSize
小于零,或者randomNumberOrigin
不是有限的,或者randomNumberBound
不是有限的,或者randomNumberOrigin
大于或等于randomNumberBound
-
doubles
从该生成器和/或从中返回一个有效的无限伪随机double
值流;每个值都符合给定的起源(包括)和边界(不包括)。- 指定者:
doubles
在接口RandomGenerator
中- 实现注意事项:
-
此方法的实现等效于
doubles(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)
。 - 参数:
randomNumberOrigin
- 每个随机值的原点(含)randomNumberBound
- 每个随机值的边界(不包括)- 返回:
-
伪随机
double
值流,每个值都具有给定的原点(包括)和边界(不包括) - 抛出:
IllegalArgumentException
- 如果randomNumberOrigin
不是有限的,或者randomNumberBound
不是有限的,或者randomNumberOrigin
大于或等于randomNumberBound
-