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

クラスSplittableRandom



  • public final class SplittableRandom
    extends Object
    (様々なコンテキストの中でも特に)サブタスクを生成する可能性がある独立した並列計算に使用可能な、一様乱数値のジェネレータです。 クラス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
    • コンストラクタのサマリー

      コンストラクタ 
      コンストラクタ 説明
      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値を返します。
      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インスタンス
      • 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 - originboundより大きいか等しい場合
      • 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 - originboundより大きいか等しい場合
      • 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 - originboundより大きいか等しい場合
      • 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未満の場合、またはrandomNumberOriginrandomNumberBound以上の場合
      • ints

        public IntStream ints​(int randomNumberOrigin,
                              int randomNumberBound)
        このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、実質的に無制限に擬似乱数 int値を生成するストリームを返します。各値は、指定された起点(これを含む)と限界(これを含まない)に従います。
        実装上の注意:
        このメソッドは、 ints(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)と同等であるように実装されます。
        パラメータ:
        randomNumberOrigin - 各乱数値の起点(含む)
        randomNumberBound - 各乱数値の境界(含まない)
        戻り値:
        それぞれ起点(含む)と境界(含まない)が指定された、擬似乱数int値のストリーム
        例外:
        IllegalArgumentException - randomNumberOriginrandomNumberBound以上の場合
      • 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未満の場合、またはrandomNumberOriginrandomNumberBound以上の場合
      • longs

        public LongStream longs​(long randomNumberOrigin,
                                long randomNumberBound)
        このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、実質的に無制限に擬似乱数 long値を生成するストリームを返します。各値は、指定された起点(これを含む)と限界(これを含まない)に従います。
        実装上の注意:
        このメソッドは、 longs(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)と同等であるように実装されます。
        パラメータ:
        randomNumberOrigin - 各乱数値の起点(含む)
        randomNumberBound - 各乱数値の境界(含まない)
        戻り値:
        それぞれ起点(含む)と境界(含まない)が指定された、擬似乱数long値のストリーム
        例外:
        IllegalArgumentException - randomNumberOriginrandomNumberBound以上の場合
      • 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未満の場合、またはrandomNumberOriginrandomNumberBound以上の場合
      • doubles

        public DoubleStream doubles​(double randomNumberOrigin,
                                    double randomNumberBound)
        このジェネレータまたはそれから分割されたジェネレータあるいはその両方から、実質的に無制限に擬似乱数 double値を生成するストリームを返します。各値は、指定された起点(これを含む)と限界(これを含まない)に従います。
        実装上の注意:
        このメソッドは、 doubles(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)と同等であるように実装されます。
        パラメータ:
        randomNumberOrigin - 各乱数値の起点(含む)
        randomNumberBound - 各乱数値の境界(含まない)
        戻り値:
        それぞれ起点(含む)と限界(含まない)が指定された、擬似乱数double値のストリーム
        例外:
        IllegalArgumentException - randomNumberOriginrandomNumberBound以上の場合