鴻蒙OS SplittableRandom

2022-08-08 16:04 更新

SplittableRandom

java.lang.Object

|---java.util.SplittableRandom

public final class SplittableRandom
extends Object

適用于(在其他上下文中)可能生成子任務(wù)的隔離并行計(jì)算的統(tǒng)一偽隨機(jī)值生成器。 SplittableRandom 類支持產(chǎn)生 int、long 和 double 類型的偽隨機(jī)數(shù)的方法,其用法與類 Random 類似,但在以下方面有所不同:

  • 一系列生成的值通過(guò)了 DieHarder 套件測(cè)試隨機(jī)數(shù)生成器的獨(dú)立性和一致性屬性。 (最近使用版本 3.31.1 進(jìn)行了驗(yàn)證。)這些測(cè)試僅驗(yàn)證某些類型和范圍的方法,但預(yù)計(jì)類似的屬性也至少大致適用于其他屬性。周期(任何一系列生成值在重復(fù)之前的長(zhǎng)度)至少為 264。
  • 方法 split() 構(gòu)造并返回一個(gè)新的 SplittableRandom 實(shí)例,該實(shí)例與當(dāng)前實(shí)例不共享可變狀態(tài)。但是,兩個(gè)對(duì)象共同生成的值很有可能具有相同的統(tǒng)計(jì)屬性,就好像單個(gè)線程使用單個(gè) SplittableRandom 對(duì)象生成相同數(shù)量的值一樣。
  • SplittableRandom 的實(shí)例不是線程安全的。它們被設(shè)計(jì)為跨線程拆分而不是共享。例如,使用隨機(jī)數(shù)的 fork/join 式計(jì)算可能包括 new Subtask(aSplittableRandom.split()).fork() 形式的構(gòu)造。
  • 此類提供用于生成隨機(jī)流的附加方法,在 stream.parallel() 模式下使用時(shí)采用上述技術(shù)。

SplittableRandom 的實(shí)例在密碼學(xué)上不是安全的。 考慮在安全敏感的應(yīng)用程序中使用 SecureRandom。 此外,默認(rèn)構(gòu)造的實(shí)例不使用加密隨機(jī)種子,除非 System#getProperty java.util.secureRandomSeed 設(shè)置為 true。

構(gòu)造函數(shù)摘要

構(gòu)造函數(shù) 描述
SplittableRandom() 創(chuàng)建一個(gè)新的 SplittableRandom 實(shí)例,該實(shí)例可能生成在統(tǒng)計(jì)上獨(dú)立于當(dāng)前程序中任何其他實(shí)例的值序列; 并且可能并且通常確實(shí)會(huì)因程序調(diào)用而異。
SplittableRandom(long seed) 使用指定的初始種子創(chuàng)建一個(gè)新的 SplittableRandom 實(shí)例。

方法總結(jié)

修飾符和類型 方法 描述
DoubleStream doubles() 從這個(gè)生成器和/或從它的一個(gè)拆分返回一個(gè)有效無(wú)限的偽隨機(jī)雙值流; 每個(gè)值都介于零(包括)和一(不包括)之間。
DoubleStream doubles(double randomNumberOrigin, double randomNumberBound) 從這個(gè)生成器和/或從它的一個(gè)拆分返回一個(gè)有效無(wú)限的偽隨機(jī)雙值流; 每個(gè)值都符合給定的原點(diǎn)(包括)和綁定(不包括)。
DoubleStream doubles(long streamSize) 返回一個(gè)流,該流產(chǎn)生給定的 streamSize 數(shù)量的偽隨機(jī)雙精度值,從這個(gè)生成器和/或一個(gè)拆分; 每個(gè)值都介于零(包括)和一(不包括)之間。
DoubleStream doubles(long streamSize, double randomNumberOrigin, double randomNumberBound) 返回一個(gè)流,該流產(chǎn)生給定的 streamSize 數(shù)量的偽隨機(jī)雙精度值,從這個(gè)生成器和/或一個(gè)拆分; 每個(gè)值都符合給定的原點(diǎn)(包括)和綁定(不包括)。
IntStream ints() 從這個(gè)生成器和/或從它的一個(gè)拆分返回一個(gè)有效無(wú)限的偽隨機(jī) int 值流。
IntStream ints(int randomNumberOrigin, int randomNumberBound) 從這個(gè)生成器和/或從它的一個(gè)拆分返回一個(gè)有效無(wú)限的偽隨機(jī) int 值流; 每個(gè)值都符合給定的原點(diǎn)(包括)和綁定(不包括)。
IntStream ints(long streamSize) 返回一個(gè)流,該流產(chǎn)生給定的 streamSize 數(shù)量的偽隨機(jī) int 值,從這個(gè)生成器和/或從中拆分出來(lái)。
IntStream ints(long streamSize, int randomNumberOrigin, int randomNumberBound) 返回一個(gè)流,該流產(chǎn)生給定的 streamSize 數(shù)量的偽隨機(jī) int 值,從這個(gè)生成器和/或從它的一個(gè)拆分; 每個(gè)值都符合給定的原點(diǎn)(包括)和綁定(不包括)。
LongStream longs() 從這個(gè)生成器和/或從它的一個(gè)拆分返回一個(gè)有效無(wú)限的偽隨機(jī)長(zhǎng)值流。
LongStream longs(long streamSize) 返回一個(gè)流,該流產(chǎn)生給定的 streamSize 數(shù)量的偽隨機(jī) long 值,從這個(gè)生成器和/或從它的一個(gè)拆分。
LongStream longs(long randomNumberOrigin, long randomNumberBound) 從這個(gè)生成器和/或從它的一個(gè)拆分返回一個(gè)有效無(wú)限的偽隨機(jī)長(zhǎng)值流; 每個(gè)值都符合給定的原點(diǎn)(包括)和綁定(不包括)。
LongStream longs(long streamSize, long randomNumberOrigin, long randomNumberBound) 返回一個(gè)流,該流產(chǎn)生給定的 streamSize 數(shù)量的偽隨機(jī)長(zhǎng)值,從這個(gè)生成器和/或從中拆分出來(lái); 每個(gè)值都符合給定的原點(diǎn)(包括)和綁定(不包括)。
boolean nextBoolean() 返回一個(gè)偽隨機(jī)布爾值。
double nextDouble() 返回零(包括)和一(不包括)之間的偽隨機(jī)雙精度值。
double nextDouble(double bound) 返回介于 0.0(包括)和指定邊界(不包括)之間的偽隨機(jī)雙精度值。
double nextDouble(double origin, double bound) 返回指定原點(diǎn)(包括)和邊界(不包括)之間的偽隨機(jī)雙精度值。
int nextInt() 返回一個(gè)偽隨機(jī) int 值。
int nextInt(int bound) 返回零(包括)和指定邊界(不包括)之間的偽隨機(jī) int 值。
int nextInt(int origin, int bound) 返回指定原點(diǎn)(包括)和指定邊界(不包括)之間的偽隨機(jī) int 值。
long nextLong() 返回一個(gè)偽隨機(jī)長(zhǎng)值。
long nextLong(long bound) 返回零(包括)和指定邊界(不包括)之間的偽隨機(jī)長(zhǎng)值。
long nextLong(long origin, long bound) 返回指定原點(diǎn)(包括)和指定邊界(不包括)之間的偽隨機(jī)長(zhǎng)值。
SplittableRandom split() 構(gòu)造并返回一個(gè)新的 SplittableRandom 實(shí)例,該實(shí)例不與此實(shí)例共享可變狀態(tài)。
從類 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

構(gòu)造函數(shù)詳細(xì)信息

SplittableRandom

public SplittableRandom(long seed)

使用指定的初始種子創(chuàng)建一個(gè)新的 SplittableRandom 實(shí)例。 在同一程序中使用相同種子創(chuàng)建的 SplittableRandom 實(shí)例會(huì)生成相同的值序列。

參數(shù):

參數(shù)名稱 參數(shù)描述
seed 最初的種子

SplittableRandom

public SplittableRandom()

創(chuàng)建一個(gè)新的 SplittableRandom 實(shí)例,該實(shí)例可能生成在統(tǒng)計(jì)上獨(dú)立于當(dāng)前程序中任何其他實(shí)例的值序列; 并且可能并且通常確實(shí)會(huì)因程序調(diào)用而異。

方法詳情

split

public SplittableRandom split()

構(gòu)造并返回一個(gè)新的 SplittableRandom 實(shí)例,該實(shí)例不與此實(shí)例共享可變狀態(tài)。 但是,兩個(gè)對(duì)象共同生成的值集具有非常高的概率具有相同的統(tǒng)計(jì)屬性,就好像單個(gè)線程使用單個(gè) SplittableRandom 對(duì)象生成相同數(shù)量的值一樣。 可以使用 split() 方法進(jìn)一步拆分兩個(gè)對(duì)象中的一個(gè)或兩個(gè),并且相同的預(yù)期統(tǒng)計(jì)屬性適用于通過(guò)這種遞歸拆分構(gòu)造的整個(gè)生成器集。

返回:

新的 SplittableRandom 實(shí)例

nextInt

public int nextInt()

返回一個(gè)偽隨機(jī) int 值。

返回:

一個(gè)偽隨機(jī) int 值

nextInt

public int nextInt(int bound)

返回零(包括)和指定邊界(不包括)之間的偽隨機(jī) int 值。

參數(shù):

參數(shù)名稱 參數(shù)描述
bound 上限(不包括)。 必須是積極的。

返回:

零(包括)和邊界(不包括)之間的偽隨機(jī) int 值

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果 bound 不是正數(shù)

nextInt

public int nextInt(int origin, int bound)

返回指定原點(diǎn)(包括)和指定邊界(不包括)之間的偽隨機(jī) int 值。

參數(shù):

參數(shù)名稱 參數(shù)描述
origin 返回的最小值
bound 上限(不包括)

返回:

原點(diǎn)(包括)和邊界(不包括)之間的偽隨機(jī) int 值

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果 origin 大于或等于 bound

nextLong

public long nextLong()

返回一個(gè)偽隨機(jī)長(zhǎng)值。

返回:

偽隨機(jī)長(zhǎng)值

nextLong

public long nextLong(long bound)

返回零(包括)和指定邊界(不包括)之間的偽隨機(jī)長(zhǎng)值。

參數(shù):

參數(shù)名稱 參數(shù)描述
bound 上限(不包括)。 必須是積極的。

返回:

零(包括)和邊界(不包括)之間的偽隨機(jī)長(zhǎng)值

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果 bound 不是正數(shù)

nextLong

public long nextLong(long origin, long bound)

返回指定原點(diǎn)(包括)和指定邊界(不包括)之間的偽隨機(jī)長(zhǎng)值。

參數(shù):

參數(shù)名稱 參數(shù)描述
origin 返回的最小值
bound 上限(不包括)

返回:

原點(diǎn)(包括)和邊界(不包括)之間的偽隨機(jī)長(zhǎng)值

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果 origin 大于或等于 bound

nextDouble

public double nextDouble()

返回零(包括)和一(不包括)之間的偽隨機(jī)雙精度值。

返回:

零(包括)和一(不包括)之間的偽隨機(jī)雙精度值

nextDouble

public double nextDouble(double bound)

返回介于 0.0(包括)和指定邊界(不包括)之間的偽隨機(jī)雙精度值。

參數(shù):

參數(shù)名稱 參數(shù)描述
bound 上限(不包括)。 必須是積極的。

返回:

零(包括)和邊界(不包括)之間的偽隨機(jī)雙精度值

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果 bound 不是正數(shù)

nextDouble

public double nextDouble(double origin, double bound)

返回指定原點(diǎn)(包括)和邊界(不包括)之間的偽隨機(jī)雙精度值。

參數(shù):

參數(shù)名稱 參數(shù)描述
origin 返回的最小值
bound 上限(不包括)

返回:

原點(diǎn)(包括)和邊界(不包括)之間的偽隨機(jī)雙精度值

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果 origin 大于或等于 bound

nextBoolean

public boolean nextBoolean()

返回一個(gè)偽隨機(jī)布爾值。

返回:

一個(gè)偽隨機(jī)布爾值

ints

public IntStream ints(long streamSize)

返回一個(gè)流,該流產(chǎn)生給定的 streamSize 數(shù)量的偽隨機(jī) int 值,從這個(gè)生成器和/或從中拆分出來(lái)。

參數(shù):

參數(shù)名稱 參數(shù)描述
streamSize 要生成的值的數(shù)量

返回:

偽隨機(jī) int 值流

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果 streamSize 小于零

ints

public IntStream ints()

從這個(gè)生成器和/或從它的一個(gè)拆分返回一個(gè)有效無(wú)限的偽隨機(jī) int 值流。

返回:

偽隨機(jī) int 值流

ints

public IntStream ints(long streamSize, int randomNumberOrigin, int randomNumberBound)

返回一個(gè)流,該流產(chǎn)生給定的 streamSize 數(shù)量的偽隨機(jī) int 值,從這個(gè)生成器和/或從它的一個(gè)拆分; 每個(gè)值都符合給定的原點(diǎn)(包括)和綁定(不包括)。

參數(shù):

參數(shù)名稱 參數(shù)描述
streamSize 要生成的值的數(shù)量
randomNumberOrigin 每個(gè)隨機(jī)值的原點(diǎn)(包括)
randomNumberBound 每個(gè)隨機(jī)值的界限(不包括)

返回:

一個(gè)偽隨機(jī) int 值流,每個(gè)值都具有給定的原點(diǎn)(包括)和邊界(不包括)

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果 streamSize 小于零,或者 randomNumberOrigin 大于或等于 randomNumberBound

ints

public IntStream ints(int randomNumberOrigin, int randomNumberBound)

從這個(gè)生成器和/或從它的一個(gè)拆分返回一個(gè)有效無(wú)限的偽隨機(jī) int 值流; 每個(gè)值都符合給定的原點(diǎn)(包括)和綁定(不包括)。

參數(shù):

參數(shù)名稱 參數(shù)描述
randomNumberOrigin 每個(gè)隨機(jī)值的原點(diǎn)(包括)
randomNumberBound 每個(gè)隨機(jī)值的界限(不包括)

返回:

一個(gè)偽隨機(jī) int 值流,每個(gè)值都具有給定的原點(diǎn)(包括)和邊界(不包括)

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果 randomNumberOrigin 大于或等于 randomNumberBound

longs

public LongStream longs(long streamSize)

返回一個(gè)流,該流產(chǎn)生給定的 streamSize 數(shù)量的偽隨機(jī) long 值,從這個(gè)生成器和/或從它的一個(gè)拆分。

參數(shù):

參數(shù)名稱 參數(shù)描述
streamSize 要生成的值的數(shù)量

返回:

偽隨機(jī)長(zhǎng)值流

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果 streamSize 小于零

longs

public LongStream longs()

從這個(gè)生成器和/或從它的一個(gè)拆分返回一個(gè)有效無(wú)限的偽隨機(jī)長(zhǎng)值流。

返回:

偽隨機(jī)長(zhǎng)值流

longs

public LongStream longs(long streamSize, long randomNumberOrigin, long randomNumberBound)

返回一個(gè)流,該流產(chǎn)生給定的 streamSize 數(shù)量的偽隨機(jī)長(zhǎng)值,從這個(gè)生成器和/或從中拆分出來(lái); 每個(gè)值都符合給定的原點(diǎn)(包括)和綁定(不包括)。

參數(shù):

參數(shù)名稱 參數(shù)描述
streamSize 要生成的值的數(shù)量
randomNumberOrigin 每個(gè)隨機(jī)值的原點(diǎn)(包括)
randomNumberBound 每個(gè)隨機(jī)值的界限(不包括)

返回:

一個(gè)偽隨機(jī)長(zhǎng)值流,每個(gè)值都具有給定的原點(diǎn)(包括)和邊界(不包括)

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果 streamSize 小于零,或者 randomNumberOrigin 大于或等于 randomNumberBound

longs

public LongStream longs(long randomNumberOrigin, long randomNumberBound)

從這個(gè)生成器和/或從它的一個(gè)拆分返回一個(gè)有效無(wú)限的偽隨機(jī)長(zhǎng)值流; 每個(gè)值都符合給定的原點(diǎn)(包括)和綁定(不包括)。

參數(shù):

參數(shù)名稱 參數(shù)描述
randomNumberOrigin 每個(gè)隨機(jī)值的原點(diǎn)(包括)
randomNumberBound 每個(gè)隨機(jī)值的界限(不包括)

返回:

一個(gè)偽隨機(jī)長(zhǎng)值流,每個(gè)值都具有給定的原點(diǎn)(包括)和邊界(不包括)

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果 randomNumberOrigin 大于或等于 randomNumberBound

doubles

public DoubleStream doubles(long streamSize)

返回一個(gè)流,該流產(chǎn)生給定的 streamSize 數(shù)量的偽隨機(jī)雙精度值,從這個(gè)生成器和/或一個(gè)拆分; 每個(gè)值都介于零(包括)和一(不包括)之間。

參數(shù):

參數(shù)名稱 參數(shù)描述
streamSize 要生成的值的數(shù)量

返回:

雙值流

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果 streamSize 小于零

doubles

public DoubleStream doubles()

從這個(gè)生成器和/或從它的一個(gè)拆分返回一個(gè)有效無(wú)限的偽隨機(jī)雙值流; 每個(gè)值都介于零(包括)和一(不包括)之間。

返回:

偽隨機(jī)雙值流

doubles

public DoubleStream doubles(long streamSize, double randomNumberOrigin, double randomNumberBound)

返回一個(gè)流,該流產(chǎn)生給定的 streamSize 數(shù)量的偽隨機(jī)雙精度值,從這個(gè)生成器和/或一個(gè)拆分; 每個(gè)值都符合給定的原點(diǎn)(包括)和綁定(不包括)。

參數(shù):

參數(shù)名稱 參數(shù)描述
streamSize 要生成的值的數(shù)量
randomNumberOrigin 每個(gè)隨機(jī)值的原點(diǎn)(包括)
randomNumberBound 每個(gè)隨機(jī)值的界限(不包括)

返回:

一個(gè)偽隨機(jī)雙值流,每個(gè)都有給定的原點(diǎn)(包括)和邊界(不包括)

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果 streamSize 小于零
IllegalArgumentException 如果 randomNumberOrigin 大于或等于 randomNumberBound

doubles

public DoubleStream doubles(double randomNumberOrigin, double randomNumberBound)

從這個(gè)生成器和/或從它的一個(gè)拆分返回一個(gè)有效無(wú)限的偽隨機(jī)雙值流; 每個(gè)值都符合給定的原點(diǎn)(包括)和綁定(不包括)。

參數(shù):

參數(shù)名稱 參數(shù)描述
randomNumberOrigin 每個(gè)隨機(jī)值的原點(diǎn)(包括)
randomNumberBound 每個(gè)隨機(jī)值的界限(不包括)

返回:

一個(gè)偽隨機(jī)雙值流,每個(gè)都有給定的原點(diǎn)(包括)和邊界(不包括)

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果 randomNumberOrigin 大于或等于 randomNumberBound
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)