モジュール java.base
パッケージ java.util

クラスSplittableRandom

java.lang.Object
java.util.SplittableRandom
すべての実装されたインタフェース:
RandomGenerator, RandomGenerator.SplittableGenerator, RandomGenerator.StreamableGenerator

public final class SplittableRandom extends Object implements RandomGenerator, RandomGenerator.SplittableGenerator
サブタスクを生成する可能性がある(他のコンテキスト)分離されたパラレル計算で使用できる、均一な擬似乱数値(期間264)のジェネレータ。 クラスSplittableRandomは、intlongおよびdouble型の擬似乱数を生成するメソッドをサポートします。使用方法はクラスRandomと似ていますが、次の点で異なります。
  • 生成された一連の値は、乱数ジェネレータの独立性と一様性をテストするDieHarderスイートに合格します。 (最新ではバージョン3.31.1で検証されています。) これらのテストで検証されるのは特定の型と範囲のメソッドだけですが、その他についても、少なくとも近似的に同様の特性が保持されることが期待されます。 「ポイント」 (繰り返す前の一連の生成値の長さ)は264です。
  • split()メソッドは、可変状態を現在のインスタンスと共有しない新しいSplittableRandomインスタンスを構築して返します。 ただし、単一の SplittableRandomオブジェクトを使用して単一のスレッドで同量の値が生成された場合と同様に、これら2つのオブジェクトによって共同で生成された値は同じ統計特性を持つ可能性が非常に高くなります。
  • SplittableRandomのインスタンスはスレッドセーフではありません これらは、スレッド間で共有するのではなく、分割するように設計されています。 たとえば、乱数を使用する分岐/結合形式の計算には、new Subtask(aSplittableRandom.split()).fork()という形式の構築が含まれる場合があります。
  • このクラスには、ランダム・ストリームを生成する追加のメソッドが用意されています。これらは、 stream.parallel()モードで使用される場合に、上記の手法を使用します。

SplittableRandomのインスタンスにはセキュアな暗号化が施されていません。 セキュリティに依存するアプリケーションでは、かわりにSecureRandomの使用を検討してください。 また、システム・プロパティjava.util.secureRandomSeedtrueに設定しないかぎり、デフォルトで構築されるインスタンスは暗号化処理に乱数シードを使用しません。

導入されたバージョン:
1.8