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インスタンスを作成します。
- 
メソッドのサマリー修飾子と型 メソッド 説明 DoubleStreamdoubles()このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、実質的に無制限に擬似乱数double値を生成するストリームを返します。各値は、0 (これを含む)と1 (これを含まない)の間にあります。DoubleStreamdoubles(double randomNumberOrigin, double randomNumberBound)このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、実質的に無制限に擬似乱数double値を生成するストリームを返します。各値は、指定された起点(これを含む)と限界(これを含まない)に従います。DoubleStreamdoubles(long streamSize)このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、streamSizeで指定された数の擬似乱数double値を生成するストリームを返します。各値は、0 (これを含む)と1 (これを含まない)の間にあります。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()0 (これを含む)から1 (これを含まない)までの、擬似乱数のdouble値を返します。doublenextDouble(double bound)0.0 (これを含む)から指定された限界(これを含まない)までの範囲で、擬似乱数のdouble値を返します。doublenextDouble(double origin, double bound)指定された起点(これを含む)から限界(これを含まない)までの範囲で、擬似乱数のdouble値を返します。intnextInt()擬似乱数のint値を返します。intnextInt(int bound)0 (これを含む)から指定された限界(これを含まない)までの範囲で、擬似乱数のint値を返します。intnextInt(int origin, int bound)指定された起点(これを含む)から指定された限界(これを含まない)までの範囲で、擬似乱数のint値を返します。longnextLong()擬似乱数のlong値を返します。longnextLong(long bound)0 (これを含む)から指定された限界(これを含まない)までの範囲で、擬似乱数のlong値を返します。longnextLong(long origin, long bound)指定された起点(これを含む)から指定された限界(これを含まない)までの範囲で、擬似乱数のlong値を返します。SplittableRandomsplit()可変状態をこのインスタンスと共有しない新しいSplittableRandomインスタンスを構築して返します。
- 
コンストラクタの詳細- 
SplittableRandompublic SplittableRandom(long seed)指定された初期シードを使用して新しいSplittableRandomインスタンスを作成します。 同じシードを使用して同じプログラムで作成されたSplittableRandomインスタンスは、同一の値のシーケンスを生成します。- パラメータ:
- seed- 初期シード
 
- 
SplittableRandompublic SplittableRandom()現在のプログラムに含まれる他のインスタンスの値とは統計的に独立し、プログラムを起動するたびに異なる可能性がある(通常は異なる)値のシーケンスを生成する可能性が高い、新しいSplittableRandomインスタンスを作成します。
 
- 
- 
メソッドの詳細- 
splitpublic SplittableRandom split()可変状態をこのインスタンスと共有しない新しいSplittableRandomインスタンスを構築して返します。 ただし、単一のSplittableRandomオブジェクトを使用して単一のスレッドで同量の値が生成された場合と同様に、これら2つのオブジェクトによって共同で生成された値は同じ統計特性を持つ可能性が非常に高くなります。 2つのオブジェクトの一方または両方が、split()メソッドを使用してさらに分割される場合もあります。そのような再帰的分割によって構築された一連のジェネレータすべてに、同じ統計特性が期待されます。- 戻り値:
- 新しいSplittableRandomインスタンス
 
- 
nextBytespublic void nextBytes(byte[] bytes)生成された擬似ランダム・バイトをユーザー提供のバイト配列に埋め込みます。- パラメータ:
- bytes- 擬似ランダム・バイトで埋めるためのバイト配列
- 例外:
- NullPointerException- bytesがnullの場合
- 導入されたバージョン:
- 10
 
- 
nextIntpublic int nextInt()擬似乱数のint値を返します。- 戻り値:
- 擬似乱数のint値
 
- 
nextIntpublic int nextInt(int bound)0 (これを含む)から指定された限界(これを含まない)までの範囲で、擬似乱数のint値を返します。- パラメータ:
- bound- 上限(含まない)。 正の値でなければならない
- 戻り値:
- 0 (これを含む)から限界(これを含まない)までの、擬似乱数のint値
- 例外:
- IllegalArgumentException-- boundが正でない場合
 
- 
nextIntpublic int nextInt(int origin, int bound)指定された起点(これを含む)から指定された限界(これを含まない)までの範囲で、擬似乱数のint値を返します。- パラメータ:
- origin- 返される最小の値
- bound- 上限(含まない)
- 戻り値:
- 起点(これを含む)から限界(これを含まない)までの、擬似乱数のint値
- 例外:
- IllegalArgumentException-- originが- boundより大きいか等しい場合
 
- 
nextLongpublic long nextLong()擬似乱数のlong値を返します。- 戻り値:
- 擬似乱数のlong値
 
- 
nextLongpublic long nextLong(long bound)0 (これを含む)から指定された限界(これを含まない)までの範囲で、擬似乱数のlong値を返します。- パラメータ:
- bound- 上限(含まない)。 正の値でなければならない
- 戻り値:
- 0 (これを含む)から限界(これを含まない)までの、擬似乱数のlong値
- 例外:
- IllegalArgumentException-- boundが正でない場合
 
- 
nextLongpublic long nextLong(long origin, long bound)指定された起点(これを含む)から指定された限界(これを含まない)までの範囲で、擬似乱数のlong値を返します。- パラメータ:
- origin- 返される最小の値
- bound- 上限(含まない)
- 戻り値:
- 起点(これを含む)から限界(これを含まない)までの、擬似乱数のlong値
- 例外:
- IllegalArgumentException-- originが- boundより大きいか等しい場合
 
- 
nextDoublepublic double nextDouble()0 (これを含む)から1 (これを含まない)までの、擬似乱数のdouble値を返します。- 戻り値:
- 0 (これを含む)から1 (これを含まない)までの、擬似乱数のdouble値
 
- 
nextDoublepublic double nextDouble(double bound)0.0 (これを含む)から指定された限界(これを含まない)までの範囲で、擬似乱数のdouble値を返します。- パラメータ:
- bound- 上限(含まない)。 正の値でなければならない
- 戻り値:
- 0 (これを含む)から限界(これを含まない)までの、擬似乱数のdouble値
- 例外:
- IllegalArgumentException-- boundが正でない場合
 
- 
nextDoublepublic double nextDouble(double origin, double bound)指定された起点(これを含む)から限界(これを含まない)までの範囲で、擬似乱数のdouble値を返します。- パラメータ:
- origin- 返される最小の値
- bound- 上限(含まない)
- 戻り値:
- 起点(これを含む)から限界(これを含まない)までの、擬似乱数のdouble値
- 例外:
- IllegalArgumentException-- originが- boundより大きいか等しい場合
 
- 
nextBooleanpublic boolean nextBoolean()擬似乱数のboolean値を返します。- 戻り値:
- 擬似乱数のboolean値
 
- 
intspublic IntStream ints(long streamSize)このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、streamSizeで指定された数の擬似乱数int値を生成するストリームを返します。- パラメータ:
- streamSize- 生成する値の数
- 戻り値:
- 擬似乱数int値のストリーム
- 例外:
- IllegalArgumentException-- streamSizeが0未満の場合
 
- 
intspublic IntStream ints()このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、実質的に無制限に擬似乱数int値を生成するストリームを返します。- 実装上の注意:
- このメソッドは、ints(Long.MAX_VALUE)と同等であるように実装されます。
- 戻り値:
- 擬似乱数int値のストリーム
 
- 
intspublic IntStream ints(long streamSize, int randomNumberOrigin, int randomNumberBound)このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、streamSizeで指定された数の擬似乱数int値を生成するストリームを返します。各値は、指定された起点(これを含む)と限界(これを含まない)に従います。- パラメータ:
- streamSize- 生成する値の数
- randomNumberOrigin- 各乱数値の起点(含む)
- randomNumberBound- 各乱数値の境界(含まない)
- 戻り値:
- それぞれ起点(含む)と境界(含まない)が指定された、擬似乱数int値のストリーム
- 例外:
- IllegalArgumentException-- streamSizeが0未満の場合、または- randomNumberOriginが- randomNumberBound以上の場合
 
- 
intspublic IntStream ints(int randomNumberOrigin, int randomNumberBound)このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、実質的に無制限に擬似乱数int値を生成するストリームを返します。各値は、指定された起点(これを含む)と限界(これを含まない)に従います。- 実装上の注意:
- このメソッドは、ints(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)と同等であるように実装されます。
- パラメータ:
- randomNumberOrigin- 各乱数値の起点(含む)
- randomNumberBound- 各乱数値の境界(含まない)
- 戻り値:
- それぞれ起点(含む)と境界(含まない)が指定された、擬似乱数int値のストリーム
- 例外:
- IllegalArgumentException-- randomNumberOriginが- randomNumberBound以上の場合
 
- 
longspublic LongStream longs(long streamSize)このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、streamSizeで指定された数の擬似乱数long値を生成するストリームを返します。- パラメータ:
- streamSize- 生成する値の数
- 戻り値:
- 擬似乱数long値のストリーム
- 例外:
- IllegalArgumentException-- streamSizeが0未満の場合
 
- 
longspublic LongStream longs()このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、実質的に無制限に擬似乱数long値を生成するストリームを返します。- 実装上の注意:
- このメソッドは、longs(Long.MAX_VALUE)と同等であるように実装されます。
- 戻り値:
- 擬似乱数long値のストリーム
 
- 
longspublic LongStream longs(long streamSize, long randomNumberOrigin, long randomNumberBound)このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、streamSizeで指定された数の擬似乱数long値を生成するストリームを返します。各値は、指定された起点(これを含む)と限界(これを含まない)に従います。- パラメータ:
- streamSize- 生成する値の数
- randomNumberOrigin- 各乱数値の起点(含む)
- randomNumberBound- 各乱数値の境界(含まない)
- 戻り値:
- それぞれ起点(含む)と境界(含まない)が指定された、擬似乱数long値のストリーム
- 例外:
- IllegalArgumentException-- streamSizeが0未満の場合、または- randomNumberOriginが- randomNumberBound以上の場合
 
- 
longspublic LongStream longs(long randomNumberOrigin, long randomNumberBound)このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、実質的に無制限に擬似乱数long値を生成するストリームを返します。各値は、指定された起点(これを含む)と限界(これを含まない)に従います。- 実装上の注意:
- このメソッドは、longs(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)と同等であるように実装されます。
- パラメータ:
- randomNumberOrigin- 各乱数値の起点(含む)
- randomNumberBound- 各乱数値の境界(含まない)
- 戻り値:
- それぞれ起点(含む)と境界(含まない)が指定された、擬似乱数long値のストリーム
- 例外:
- IllegalArgumentException-- randomNumberOriginが- randomNumberBound以上の場合
 
- 
doublespublic DoubleStream doubles(long streamSize)このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、streamSizeで指定された数の擬似乱数double値を生成するストリームを返します。各値は、0 (これを含む)と1 (これを含まない)の間にあります。- パラメータ:
- streamSize- 生成する値の数
- 戻り値:
- double値のストリーム
- 例外:
- IllegalArgumentException-- streamSizeが0未満の場合
 
- 
doublespublic DoubleStream doubles()このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、実質的に無制限に擬似乱数double値を生成するストリームを返します。各値は、0 (これを含む)と1 (これを含まない)の間にあります。- 実装上の注意:
- このメソッドは、doubles(Long.MAX_VALUE)と同等であるように実装されます。
- 戻り値:
- 擬似乱数double値のストリーム
 
- 
doublespublic DoubleStream doubles(long streamSize, double randomNumberOrigin, double randomNumberBound)このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、streamSizeで指定された数の擬似乱数double値を生成するストリームを返します。各値は、指定された起点(これを含む)と限界(これを含まない)に従います。- パラメータ:
- streamSize- 生成する値の数
- randomNumberOrigin- 各乱数値の起点(含む)
- randomNumberBound- 各乱数値の境界(含まない)
- 戻り値:
- それぞれ起点(含む)と限界(含まない)が指定された、擬似乱数double値のストリーム
- 例外:
- IllegalArgumentException-- streamSizeが0未満の場合、または- randomNumberOriginが- randomNumberBound以上の場合
 
- 
doublespublic DoubleStream doubles(double randomNumberOrigin, double randomNumberBound)このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、実質的に無制限に擬似乱数double値を生成するストリームを返します。各値は、指定された起点(これを含む)と限界(これを含まない)に従います。- 実装上の注意:
- このメソッドは、doubles(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)と同等であるように実装されます。
- パラメータ:
- randomNumberOrigin- 各乱数値の起点(含む)
- randomNumberBound- 各乱数値の境界(含まない)
- 戻り値:
- それぞれ起点(含む)と限界(含まない)が指定された、擬似乱数double値のストリーム
- 例外:
- IllegalArgumentException-- randomNumberOriginが- randomNumberBound以上の場合
 
 
-