- java.lang.Object
-
- java.util.SplittableRandom
-
public final class SplittableRandom extends Object
(様々なコンテキストの中でも特に)サブタスクを生成する可能性がある独立した並列計算に使用可能な、一様乱数値のジェネレータです。 クラスSplittableRandom
は、int
、long
およびdouble
型の擬似乱数を生成するメソッドをサポートします。使用方法はクラスRandom
と似ていますが、次の点で異なります。- 生成された一連の値は、乱数ジェネレータの独立性と一様性をテストするDieHarderスイートに合格します。 (最新ではバージョン3.31.1で検証されています。) これらのテストで検証されるのは特定の型と範囲のメソッドだけですが、その他についても、少なくとも近似的に同様の特性が保持されることが期待されます。 期間(生成される一連の値の、繰返しを含まない長さ)は少なくとも264です。
split()
メソッドは、可変状態を現在のインスタンスと共有しない新しいSplittableRandomインスタンスを構築して返します。 ただし、単一のSplittableRandom
オブジェクトを使用して単一のスレッドで同量の値が生成された場合と同様に、これら2つのオブジェクトによって共同で生成された値は同じ統計特性を持つ可能性が非常に高くなります。- SplittableRandomのインスタンスはスレッドセーフではありません。 これらは、スレッド間で共有するのではなく、分割するように設計されています。 たとえば、乱数を使用する
分岐/結合形式
の計算には、new Subtask(aSplittableRandom.split()).fork()
という形式の構築が含まれる場合があります。 - このクラスには、ランダム・ストリームを生成する追加のメソッドが用意されています。これらは、
stream.parallel()
モードで使用される場合に、上記の手法を使用します。
SplittableRandom
のインスタンスにはセキュアな暗号化が施されていません。 セキュリティに依存するアプリケーションでは、かわりにSecureRandom
の使用を検討してください。 また、「システム・プロパティ」java.util.secureRandomSeed
がtrue
に設定されていないかぎり、デフォルトで構築されるインスタンスでは、暗号化されたランダム・シードは使用されません。- 導入されたバージョン:
- 1.8
-
-
コンストラクタのサマリー
コンストラクタ コンストラクタ 説明 SplittableRandom()
現在のプログラムに含まれる他のインスタンスの値とは統計的に独立し、プログラムを起動するたびに異なる可能性がある(通常は異なる)値のシーケンスを生成する可能性が高い、新しいSplittableRandomインスタンスを作成します。SplittableRandom(long seed)
指定された初期シードを使用して新しいSplittableRandomインスタンスを作成します。
-
メソッドのサマリー
修飾子と型 メソッド 説明 DoubleStream
doubles()
このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、実質的に無制限に擬似乱数double
値を生成するストリームを返します。各値は、0 (これを含む)と1 (これを含まない)の間にあります。DoubleStream
doubles(double randomNumberOrigin, double randomNumberBound)
このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、実質的に無制限に擬似乱数double
値を生成するストリームを返します。各値は、指定された起点(これを含む)と限界(これを含まない)に従います。DoubleStream
doubles(long streamSize)
このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、streamSize
で指定された数の擬似乱数double
値を生成するストリームを返します。各値は、0 (これを含む)と1 (これを含まない)の間にあります。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()
0 (これを含む)から1 (これを含まない)までの、擬似乱数のdouble
値を返します。double
nextDouble(double bound)
0.0 (これを含む)から指定された限界(これを含まない)までの範囲で、擬似乱数のdouble
値を返します。double
nextDouble(double origin, double bound)
指定された起点(これを含む)から限界(これを含まない)までの範囲で、擬似乱数のdouble
値を返します。int
nextInt()
擬似乱数のint
値を返します。int
nextInt(int bound)
0 (これを含む)から指定された限界(これを含まない)までの範囲で、擬似乱数のint
値を返します。int
nextInt(int origin, int bound)
指定された起点(これを含む)から指定された限界(これを含まない)までの範囲で、擬似乱数のint
値を返します。long
nextLong()
擬似乱数のlong
値を返します。long
nextLong(long bound)
0 (これを含む)から指定された限界(これを含まない)までの範囲で、擬似乱数のlong
値を返します。long
nextLong(long origin, long bound)
指定された起点(これを含む)から指定された限界(これを含まない)までの範囲で、擬似乱数のlong
値を返します。SplittableRandom
split()
可変状態をこのインスタンスと共有しない新しいSplittableRandomインスタンスを構築して返します。
-
-
-
コンストラクタの詳細
-
SplittableRandom
public SplittableRandom(long seed)
指定された初期シードを使用して新しいSplittableRandomインスタンスを作成します。 同じシードを使用して同じプログラムで作成されたSplittableRandomインスタンスは、同一の値のシーケンスを生成します。- パラメータ:
seed
- 初期シード
-
SplittableRandom
public SplittableRandom()
現在のプログラムに含まれる他のインスタンスの値とは統計的に独立し、プログラムを起動するたびに異なる可能性がある(通常は異なる)値のシーケンスを生成する可能性が高い、新しいSplittableRandomインスタンスを作成します。
-
-
メソッドの詳細
-
split
public SplittableRandom split()
可変状態をこのインスタンスと共有しない新しいSplittableRandomインスタンスを構築して返します。 ただし、単一のSplittableRandomオブジェクトを使用して単一のスレッドで同量の値が生成された場合と同様に、これら2つのオブジェクトによって共同で生成された値は同じ統計特性を持つ可能性が非常に高くなります。 2つのオブジェクトの一方または両方が、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)
0 (これを含む)から指定された限界(これを含まない)までの範囲で、擬似乱数のint
値を返します。- パラメータ:
bound
- 上限(含まない)。 正の値でなければならない- 戻り値:
- 0 (これを含む)から限界(これを含まない)までの、擬似乱数の
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)
0 (これを含む)から指定された限界(これを含まない)までの範囲で、擬似乱数のlong
値を返します。- パラメータ:
bound
- 上限(含まない)。 正の値でなければならない- 戻り値:
- 0 (これを含む)から限界(これを含まない)までの、擬似乱数の
long
値 - 例外:
IllegalArgumentException
-bound
が正でない場合
-
nextLong
public long nextLong(long origin, long bound)
指定された起点(これを含む)から指定された限界(これを含まない)までの範囲で、擬似乱数のlong
値を返します。- パラメータ:
origin
- 返される最小の値bound
- 上限(含まない)- 戻り値:
- 起点(これを含む)から限界(これを含まない)までの、擬似乱数の
long
値 - 例外:
IllegalArgumentException
-origin
がbound
より大きいか等しい場合
-
nextDouble
public double nextDouble()
0 (これを含む)から1 (これを含まない)までの、擬似乱数のdouble
値を返します。- 戻り値:
- 0 (これを含む)から1 (これを含まない)までの、擬似乱数の
double
値
-
nextDouble
public double nextDouble(double bound)
0.0 (これを含む)から指定された限界(これを含まない)までの範囲で、擬似乱数のdouble
値を返します。- パラメータ:
bound
- 上限(含まない)。 正の値でなければならない- 戻り値:
- 0 (これを含む)から限界(これを含まない)までの、擬似乱数の
double
値 - 例外:
IllegalArgumentException
-bound
が正でない場合
-
nextDouble
public double nextDouble(double origin, double 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
が0未満の場合
-
ints
public IntStream ints()
このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、実質的に無制限に擬似乱数int
値を生成するストリームを返します。- 実装上の注意:
- このメソッドは、
ints(Long.MAX_VALUE)
と同等であるように実装されます。 - 戻り値:
- 擬似乱数
int
値のストリーム
-
ints
public IntStream ints(long streamSize, int randomNumberOrigin, int randomNumberBound)
このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、streamSize
で指定された数の擬似乱数int
値を生成するストリームを返します。各値は、指定された起点(これを含む)と限界(これを含まない)に従います。- パラメータ:
streamSize
- 生成する値の数randomNumberOrigin
- 各乱数値の起点(含む)randomNumberBound
- 各乱数値の境界(含まない)- 戻り値:
- それぞれ起点(含む)と境界(含まない)が指定された、擬似乱数
int
値のストリーム - 例外:
IllegalArgumentException
-streamSize
が0未満の場合、またはrandomNumberOrigin
がrandomNumberBound
以上の場合
-
ints
public IntStream ints(int randomNumberOrigin, int randomNumberBound)
このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、実質的に無制限に擬似乱数int
値を生成するストリームを返します。各値は、指定された起点(これを含む)と限界(これを含まない)に従います。- 実装上の注意:
- このメソッドは、
ints(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)
と同等であるように実装されます。 - パラメータ:
randomNumberOrigin
- 各乱数値の起点(含む)randomNumberBound
- 各乱数値の境界(含まない)- 戻り値:
- それぞれ起点(含む)と境界(含まない)が指定された、擬似乱数
int
値のストリーム - 例外:
IllegalArgumentException
-randomNumberOrigin
がrandomNumberBound
以上の場合
-
longs
public LongStream longs(long streamSize)
このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、streamSize
で指定された数の擬似乱数long
値を生成するストリームを返します。- パラメータ:
streamSize
- 生成する値の数- 戻り値:
- 擬似乱数
long
値のストリーム - 例外:
IllegalArgumentException
-streamSize
が0未満の場合
-
longs
public LongStream longs()
このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、実質的に無制限に擬似乱数long
値を生成するストリームを返します。- 実装上の注意:
- このメソッドは、
longs(Long.MAX_VALUE)
と同等であるように実装されます。 - 戻り値:
- 擬似乱数
long
値のストリーム
-
longs
public LongStream longs(long streamSize, long randomNumberOrigin, long randomNumberBound)
このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、streamSize
で指定された数の擬似乱数long
値を生成するストリームを返します。各値は、指定された起点(これを含む)と限界(これを含まない)に従います。- パラメータ:
streamSize
- 生成する値の数randomNumberOrigin
- 各乱数値の起点(含む)randomNumberBound
- 各乱数値の境界(含まない)- 戻り値:
- それぞれ起点(含む)と境界(含まない)が指定された、擬似乱数
long
値のストリーム - 例外:
IllegalArgumentException
-streamSize
が0未満の場合、またはrandomNumberOrigin
がrandomNumberBound
以上の場合
-
longs
public LongStream longs(long randomNumberOrigin, long randomNumberBound)
このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、実質的に無制限に擬似乱数long
値を生成するストリームを返します。各値は、指定された起点(これを含む)と限界(これを含まない)に従います。- 実装上の注意:
- このメソッドは、
longs(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)
と同等であるように実装されます。 - パラメータ:
randomNumberOrigin
- 各乱数値の起点(含む)randomNumberBound
- 各乱数値の境界(含まない)- 戻り値:
- それぞれ起点(含む)と境界(含まない)が指定された、擬似乱数
long
値のストリーム - 例外:
IllegalArgumentException
-randomNumberOrigin
がrandomNumberBound
以上の場合
-
doubles
public DoubleStream doubles(long streamSize)
このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、streamSize
で指定された数の擬似乱数double
値を生成するストリームを返します。各値は、0 (これを含む)と1 (これを含まない)の間にあります。- パラメータ:
streamSize
- 生成する値の数- 戻り値:
double
値のストリーム- 例外:
IllegalArgumentException
-streamSize
が0未満の場合
-
doubles
public DoubleStream doubles()
このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、実質的に無制限に擬似乱数double
値を生成するストリームを返します。各値は、0 (これを含む)と1 (これを含まない)の間にあります。- 実装上の注意:
- このメソッドは、
doubles(Long.MAX_VALUE)
と同等であるように実装されます。 - 戻り値:
- 擬似乱数
double
値のストリーム
-
doubles
public DoubleStream doubles(long streamSize, double randomNumberOrigin, double randomNumberBound)
このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、streamSize
で指定された数の擬似乱数double
値を生成するストリームを返します。各値は、指定された起点(これを含む)と限界(これを含まない)に従います。- パラメータ:
streamSize
- 生成する値の数randomNumberOrigin
- 各乱数値の起点(含む)randomNumberBound
- 各乱数値の境界(含まない)- 戻り値:
- それぞれ起点(含む)と限界(含まない)が指定された、擬似乱数
double
値のストリーム - 例外:
IllegalArgumentException
-streamSize
が0未満の場合、またはrandomNumberOrigin
がrandomNumberBound
以上の場合
-
doubles
public DoubleStream doubles(double randomNumberOrigin, double randomNumberBound)
このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、実質的に無制限に擬似乱数double
値を生成するストリームを返します。各値は、指定された起点(これを含む)と限界(これを含まない)に従います。- 実装上の注意:
- このメソッドは、
doubles(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)
と同等であるように実装されます。 - パラメータ:
randomNumberOrigin
- 各乱数値の起点(含む)randomNumberBound
- 各乱数値の境界(含まない)- 戻り値:
- それぞれ起点(含む)と限界(含まない)が指定された、擬似乱数
double
値のストリーム - 例外:
IllegalArgumentException
-randomNumberOrigin
がrandomNumberBound
以上の場合
-
-