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で検証されています。) これらのテストで検証されるのは特定の型と範囲のメソッドだけですが、その他についても、少なくとも近似的に同様の特性が保持されることが期待されます。 「ポイント」 (繰り返す前の一連の生成値の長さ)は264です。
-
split()
メソッドは、可変状態を現在のインスタンスと共有しない新しいSplittableRandomインスタンスを構築して返します。 ただし、単一のSplittableRandom
オブジェクトを使用して単一のスレッドで同量の値が生成された場合と同様に、これら2つのオブジェクトによって共同で生成された値は同じ統計特性を持つ可能性が非常に高くなります。 - SplittableRandomのインスタンスはスレッドセーフではありません。 これらは、スレッド間で共有するのではなく、分割するように設計されています。 たとえば、乱数を使用する
分岐/結合形式
の計算には、new Subtask(aSplittableRandom.split()).fork()
という形式の構築が含まれる場合があります。 - このクラスには、ランダム・ストリームを生成する追加のメソッドが用意されています。これらは、
stream.parallel()
モードで使用される場合に、上記の手法を使用します。
SplittableRandom
のインスタンスにはセキュアな暗号化が施されていません。 セキュリティに依存するアプリケーションでは、かわりにSecureRandom
の使用を検討してください。 また、システム・プロパティjava.util.secureRandomSeed
をtrue
に設定しないかぎり、デフォルトで構築されるインスタンスは暗号化処理に乱数シードを使用しません。
- 導入されたバージョン:
- 1.8
-
ネストされたクラスのサマリー
インタフェースjava.util.random.RandomGeneratorで宣言されたネストされたクラス/インタフェース
RandomGenerator.ArbitrarilyJumpableGenerator, RandomGenerator.JumpableGenerator, RandomGenerator.LeapableGenerator, RandomGenerator.SplittableGenerator, RandomGenerator.StreamableGenerator
-
コンストラクタのサマリー
コンストラクタコンストラクタ説明現在のプログラムに含まれる他のインスタンスの値とは統計的に独立し、プログラムを起動するたびに異なる可能性がある(通常は異なる)値のシーケンスを生成する可能性が高い、新しいSplittableRandomインスタンスを作成します。SplittableRandom
(long seed) 指定された初期シードを使用して新しいSplittableRandomインスタンスを作成します。 -
メソッドのサマリー
修飾子と型メソッド説明doubles()
このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、実質的に無制限に擬似乱数double
値を生成するストリームを返します。各値は、0 (これを含む)と1 (これを含まない)の間にあります。doubles
(double randomNumberOrigin, double randomNumberBound) このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、実質的に無制限に擬似乱数double
値を生成するストリームを返します。各値は、指定された起点(これを含む)と限界(これを含まない)に従います。doubles
(long streamSize) このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、streamSize
で指定された数の擬似乱数double
値を生成するストリームを返します。各値は、0 (これを含む)と1 (これを含まない)の間にあります。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 (inclusive)と127 (inclusive)の間の値範囲から擬似乱数的に選択された一様なバイト値が生成されたユーザー指定のバイト配列になります。long
nextLong()
擬似乱数的に選択したlong
値を返します。split()
可変状態をこのインスタンスと共有しない新しいSplittableRandomインスタンスを構築して返します。RandomGenerator
およびRandomGenerator.SplittableGenerator
インタフェースを実装する、この番号から分割された新しい擬似乱数ジェネレータを返します。splits()
RandomGenerator.SplittableGenerator
インタフェースを実装する新しい擬似乱数ジェネレータの実質的に無制限のストリームを返します。splits
(long streamSize) RandomGenerator.SplittableGenerator
インタフェースを実装する新しい擬似乱数ジェネレータの特定のstreamSize
数を生成するストリームを返します。splits
(long streamSize, RandomGenerator.SplittableGenerator source) RandomGenerator.SplittableGenerator
インタフェースを実装する新しい擬似乱数ジェネレータの特定のstreamSize
数を生成するストリームを返します。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
public SplittableRandom split()可変状態をこのインスタンスと共有しない新しいSplittableRandomインスタンスを構築して返します。 ただし、単一のSplittableRandomオブジェクトを使用して単一のスレッドで同量の値が生成された場合と同様に、これら2つのオブジェクトによって共同で生成された値は同じ統計特性を持つ可能性が非常に高くなります。 2つのオブジェクトの一方または両方が、split()
メソッドを使用してさらに分割される場合もあります。そのような再帰的分割によって構築された一連のジェネレータすべてに、同じ統計特性が期待されます。- 定義:
- インタフェース
RandomGenerator.SplittableGenerator
内のsplit
- 戻り値:
- 新しいSplittableRandomインスタンス
-
split
public SplittableRandom split(RandomGenerator.SplittableGenerator source) RandomGenerator
およびRandomGenerator.SplittableGenerator
インタフェースを実装する、この番号から分割された新しい擬似乱数ジェネレータを返します。- 定義:
- インタフェース
RandomGenerator.SplittableGenerator
内のsplit
- パラメータ:
source
- このインスタンスのかわりに、新しいインスタンスの状態を初期化するために使用される擬似乱数・ビットのソースとして使用されるRandomGenerator.SplittableGenerator
インスタンス。- 戻り値:
- an object that implements the
RandomGenerator
andRandomGenerator.SplittableGenerator
interfaces - 例外:
NullPointerException
- ソースがnullの場合- 導入されたバージョン:
- 17
-
nextLong
public long nextLong()インタフェース:RandomGenerator
からコピーされた説明擬似乱数的に選択したlong
値を返します。- 定義:
- インタフェース
RandomGenerator
内のnextLong
- 戻り値:
- 擬似乱数的に選択された
long
値
-
nextBytes
public void nextBytes(byte[] bytes) -128 (inclusive)と127 (inclusive)の間の値範囲から擬似乱数的に選択された一様なバイト値が生成されたユーザー指定のバイト配列になります。- 定義:
- インタフェース
RandomGenerator
内のnextBytes
- パラメータ:
bytes
- 擬似ランダム・バイトで埋めるためのバイト配列- 例外:
NullPointerException
- bytesがnullの場合- 導入されたバージョン:
- 10
-
splits
public Stream<RandomGenerator.SplittableGenerator> splits()RandomGenerator.SplittableGenerator
インタフェースを実装する新しい擬似乱数ジェネレータの実質的に無制限のストリームを返します。この擬似乱数ジェネレータは、新しい状態の初期化に使用される擬似乱数ビットのソースとして使用できます。
- 定義:
- インタフェース
RandomGenerator.SplittableGenerator
内のsplits
- 実装要件:
- デフォルトの実装では、
splits(this)
が起動します。 - 戻り値:
RandomGenerator.SplittableGenerator
オブジェクトのストリーム- 導入されたバージョン:
- 17
-
splits
public Stream<RandomGenerator.SplittableGenerator> splits(long streamSize) RandomGenerator.SplittableGenerator
インタフェースを実装する新しい擬似乱数ジェネレータの特定のstreamSize
数を生成するストリームを返します。この擬似乱数ジェネレータは、新しい状態の初期化に使用される擬似乱数ビットのソースとして使用できます。
- 定義:
- インタフェース
RandomGenerator.SplittableGenerator
内のsplits
- 実装要件:
- パラメータ:
streamSize
- 生成する値の数- 戻り値:
RandomGenerator.SplittableGenerator
オブジェクトのストリーム- 例外:
IllegalArgumentException
-streamSize
が0未満の場合- 導入されたバージョン:
- 17
-
splits
public Stream<RandomGenerator.SplittableGenerator> splits(RandomGenerator.SplittableGenerator source) RandomGenerator.SplittableGenerator
インタフェースを実装する新しい擬似乱数ジェネレータの実質的に無制限のストリームを返します。- 定義:
- インタフェース
RandomGenerator.SplittableGenerator
内のsplits
- 実装要件:
- パラメータ:
source
- このインスタンスのかわりに、新しいインスタンスの状態を初期化するために使用される擬似乱数・ビットのソースとして使用されるRandomGenerator.SplittableGenerator
インスタンス。- 戻り値:
RandomGenerator.SplittableGenerator
オブジェクトのストリーム- 例外:
NullPointerException
- ソースがnullの場合- 導入されたバージョン:
- 17
-
splits
public Stream<RandomGenerator.SplittableGenerator> splits(long streamSize, RandomGenerator.SplittableGenerator source) RandomGenerator.SplittableGenerator
インタフェースを実装する新しい擬似乱数ジェネレータの特定のstreamSize
数を生成するストリームを返します。- 定義:
- インタフェース
RandomGenerator.SplittableGenerator
内のsplits
- 実装要件:
- パラメータ:
streamSize
- 生成する値の数source
- このインスタンスのかわりに、新しいインスタンスの状態を初期化するために使用される擬似乱数・ビットのソースとして使用されるRandomGenerator.SplittableGenerator
インスタンス。- 戻り値:
RandomGenerator.SplittableGenerator
オブジェクトのストリーム- 例外:
NullPointerException
- ソースがnullの場合IllegalArgumentException
-streamSize
が0未満の場合- 導入されたバージョン:
- 17
-
ints
public IntStream ints(long streamSize) このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、streamSize
で指定された数の擬似乱数int
値を生成するストリームを返します。- 定義:
- インタフェース
RandomGenerator
内のints
- パラメータ:
streamSize
- 生成する値の数- 戻り値:
- 擬似乱数
int
値のストリーム - 例外:
IllegalArgumentException
-streamSize
が0未満の場合
-
ints
public IntStream ints()このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、実質的に無制限に擬似乱数int
値を生成するストリームを返します。- 定義:
- インタフェース
RandomGenerator
内のints
- 実装上のノート:
- このメソッドは、
ints(Long.MAX_VALUE)
と同等であるように実装されます。 - 戻り値:
- 擬似乱数
int
値のストリーム
-
ints
public IntStream ints(long streamSize, int randomNumberOrigin, int randomNumberBound) このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、streamSize
で指定された数の擬似乱数int
値を生成するストリームを返します。各値は、指定された起点(これを含む)と限界(これを含まない)に従います。- 定義:
- インタフェース
RandomGenerator
内のints
- パラメータ:
streamSize
- 生成する値の数randomNumberOrigin
- 各乱数値の起点(含む)randomNumberBound
- 各乱数値の境界(含まない)- 戻り値:
- それぞれ起点(含む)と境界(含まない)が指定された、擬似乱数
int
値のストリーム - 例外:
IllegalArgumentException
-streamSize
が0未満の場合、またはrandomNumberOrigin
がrandomNumberBound
以上の場合
-
ints
public IntStream ints(int randomNumberOrigin, int randomNumberBound) このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、実質的に無制限に擬似乱数int
値を生成するストリームを返します。各値は、指定された起点(これを含む)と限界(これを含まない)に従います。- 定義:
- インタフェース
RandomGenerator
内のints
- 実装上のノート:
- このメソッドは、
ints(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)
と同等であるように実装されます。 - パラメータ:
randomNumberOrigin
- 各乱数値の起点(含む)randomNumberBound
- 各乱数値の境界(含まない)- 戻り値:
- それぞれ起点(含む)と境界(含まない)が指定された、擬似乱数
int
値のストリーム - 例外:
IllegalArgumentException
-randomNumberOrigin
がrandomNumberBound
以上の場合
-
longs
public LongStream longs(long streamSize) このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、streamSize
で指定された数の擬似乱数long
値を生成するストリームを返します。- 定義:
- インタフェース
RandomGenerator
内のlongs
- パラメータ:
streamSize
- 生成する値の数- 戻り値:
- 擬似乱数
long
値のストリーム - 例外:
IllegalArgumentException
-streamSize
が0未満の場合
-
longs
public LongStream longs()このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、実質的に無制限に擬似乱数long
値を生成するストリームを返します。- 定義:
- インタフェース
RandomGenerator
内のlongs
- 実装上のノート:
- このメソッドは、
longs(Long.MAX_VALUE)
と同等であるように実装されます。 - 戻り値:
- 擬似乱数
long
値のストリーム
-
longs
public LongStream longs(long streamSize, long randomNumberOrigin, long randomNumberBound) このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、streamSize
で指定された数の擬似乱数long
値を生成するストリームを返します。各値は、指定された起点(これを含む)と限界(これを含まない)に従います。- 定義:
- インタフェース
RandomGenerator
内のlongs
- パラメータ:
streamSize
- 生成する値の数randomNumberOrigin
- 各乱数値の起点(含む)randomNumberBound
- 各乱数値の境界(含まない)- 戻り値:
- それぞれ起点(含む)と境界(含まない)が指定された、擬似乱数
long
値のストリーム - 例外:
IllegalArgumentException
-streamSize
が0未満の場合、またはrandomNumberOrigin
がrandomNumberBound
以上の場合
-
longs
public LongStream longs(long randomNumberOrigin, long randomNumberBound) このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、実質的に無制限に擬似乱数long
値を生成するストリームを返します。各値は、指定された起点(これを含む)と限界(これを含まない)に従います。- 定義:
- インタフェース
RandomGenerator
内のlongs
- 実装上のノート:
- このメソッドは、
longs(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)
と同等であるように実装されます。 - パラメータ:
randomNumberOrigin
- 各乱数値の起点(含む)randomNumberBound
- 各乱数値の境界(含まない)- 戻り値:
- それぞれ起点(含む)と境界(含まない)が指定された、擬似乱数
long
値のストリーム - 例外:
IllegalArgumentException
-randomNumberOrigin
がrandomNumberBound
以上の場合
-
doubles
public DoubleStream doubles(long streamSize) このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、streamSize
で指定された数の擬似乱数double
値を生成するストリームを返します。各値は、0 (これを含む)と1 (これを含まない)の間にあります。- 定義:
- インタフェース
RandomGenerator
内のdoubles
- パラメータ:
streamSize
- 生成する値の数- 戻り値:
double
値のストリーム- 例外:
IllegalArgumentException
-streamSize
が0未満の場合
-
doubles
public DoubleStream doubles()このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、実質的に無制限に擬似乱数double
値を生成するストリームを返します。各値は、0 (これを含む)と1 (これを含まない)の間にあります。- 定義:
- インタフェース
RandomGenerator
内のdoubles
- 実装上のノート:
- このメソッドは、
doubles(Long.MAX_VALUE)
と同等であるように実装されます。 - 戻り値:
- 擬似乱数
double
値のストリーム
-
doubles
public DoubleStream doubles(long streamSize, double randomNumberOrigin, double randomNumberBound) このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、streamSize
で指定された数の擬似乱数double
値を生成するストリームを返します。各値は、指定された起点(これを含む)と限界(これを含まない)に従います。- 定義:
- インタフェース
RandomGenerator
内のdoubles
- パラメータ:
streamSize
- 生成する値の数randomNumberOrigin
- 各乱数値の起点(含む)randomNumberBound
- 各乱数値の境界(含まない)- 戻り値:
- それぞれ起点(含む)と限界(含まない)が指定された、擬似乱数
double
値のストリーム - 例外:
IllegalArgumentException
-streamSize
がゼロ未満またはrandomNumberOrigin
が有限でない場合、またはrandomNumberBound
が有限でない場合、またはrandomNumberOrigin
がrandomNumberBound
以上である場合
-
doubles
public DoubleStream doubles(double randomNumberOrigin, double randomNumberBound) このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、実質的に無制限に擬似乱数double
値を生成するストリームを返します。各値は、指定された起点(これを含む)と限界(これを含まない)に従います。- 定義:
- インタフェース
RandomGenerator
内のdoubles
- 実装上のノート:
- このメソッドは、
doubles(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)
と同等であるように実装されます。 - パラメータ:
randomNumberOrigin
- 各乱数値の起点(含む)randomNumberBound
- 各乱数値の境界(含まない)- 戻り値:
- それぞれ起点(含む)と限界(含まない)が指定された、擬似乱数
double
値のストリーム - 例外:
IllegalArgumentException
-randomNumberOrigin
が有限でない場合、またはrandomNumberBound
が有限でない場合、またはrandomNumberOrigin
がrandomNumberBound
以上である場合
-