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

クラスThreadLocalRandom

java.lang.Object
java.util.Random
java.util.concurrent.ThreadLocalRandom
すべての実装されたインタフェース:
Serializable, RandomGenerator

public class ThreadLocalRandom extends Random
現在のスレッドに分離された乱数ジェネレータ(期間264)。 Mathクラスによって使用されるグローバルなRandomジェネレータと同様に、ThreadLocalRandomは、それ以外では変更できない内部的に生成されたシードで初期化されます。 該当する場合、並行プログラム内の共有されたRandomオブジェクトではなくThreadLocalRandomを使用すれば、通常、発生するオーバーヘッドや競合がはるかに少なくなります。 ThreadLocalRandomの使用は、複数のタスク(たとえば、各ForkJoinTask)がスレッド・プール内で並列に乱数を使用している場合に特に適しています。

このクラスの使用法は通常、ThreadLocalRandom.current().nextX(...) (ここで、XIntLongなど)の形式にするようにしてください。 すべての使用方法がこの形式である場合、誤って複数のスレッドでThreadLocalRandomを共有することはできません。

このクラスはまた、追加の一般的に使用される制約付きランダム生成メソッドも提供します。

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

導入されたバージョン:
1.7
関連項目:
  • ネストされたクラスのサマリー

  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    現在のスレッドThreadLocalRandomオブジェクトを返します。
    0(含む)から1(含まない)までの擬似乱数 double値を含む、事実上無制限のストリームを返します。
    doubles(double randomNumberOrigin, double randomNumberBound)
    指定された起点(含む)と境界(含まない)に準拠した擬似乱数 double値を含む、事実上無制限のストリームを返します。
    doubles(long streamSize)
    0(含む)から1(含まない)までの擬似乱数double値を、指定されたstreamSize数だけ生成するストリームを返します。
    doubles(long streamSize, double randomNumberOrigin, double randomNumberBound)
    指定された起点(含む)と境界(含まない)に準拠した擬似乱数double値を、指定されたstreamSize数だけ生成するストリームを返します。
    擬似乱数int値を含む、事実上無制限のストリームを返します。
    ints(int randomNumberOrigin, int randomNumberBound)
    指定された起点(含む)と境界(含まない)に準拠した擬似乱数 int値を含む、事実上無制限のストリームを返します。
    ints(long streamSize)
    擬似乱数int値を、指定されたstreamSize数だけ生成するストリームを返します。
    ints(long streamSize, int randomNumberOrigin, int randomNumberBound)
    指定された起点(含む)と境界(含まない)に準拠した擬似乱数int値を、指定されたstreamSize数だけ生成するストリームを返します。
    擬似乱数long値を含む、事実上無制限のストリームを返します。
    longs(long streamSize)
    擬似乱数long値を、指定されたstreamSize数だけ生成するストリームを返します。
    longs(long randomNumberOrigin, long randomNumberBound)
    指定された起点(含む)と境界(含まない)に準拠した擬似乱数 long値を含む、事実上無制限のストリームを返します。
    longs(long streamSize, long randomNumberOrigin, long randomNumberBound)
    指定された起点(含む)と境界(含まない)に準拠した擬似乱数longを、指定されたstreamSize数だけ生成するストリームを返します。
    protected int
    next(int bits)
    示された下位ビット数の擬似乱数を生成します。
    double
    nextDouble(double bound)
    ゼロ(inclusive)と指定した境界(exclusive)の間の擬似乱数的に選択したdouble値を返します。
    double
    nextDouble(double origin, double bound)
    指定された起点(inclusive)と指定された境界(exclusive)の間の擬似乱数的に選択したdouble値を返します。
    float
    nextFloat(float bound)
    ゼロ(inclusive)と指定したバインド(exclusive)の間の擬似乱数的に選択したfloat値を返します。
    float
    nextFloat(float origin, float bound)
    指定された起点(inclusive)と指定された境界(exclusive)の間の擬似乱数的に選択したfloat値を返します。
    int
    nextInt(int bound)
    この乱数ジェネレータのシーケンスを使って、0から指定された値の範囲(0は含むが、その指定された値は含まない)で一様分布のint型の擬似乱数値を返します。
    int
    nextInt(int origin, int bound)
    指定された起点(inclusive)と指定された境界(exclusive)の間の擬似乱数的に選択したint値を返します。
    long
    nextLong(long bound)
    ゼロ(inclusive)と指定した境界(exclusive)の間の擬似乱数的に選択したlong値を返します。
    long
    nextLong(long origin, long bound)
    指定された起点(inclusive)と指定された境界(exclusive)の間の擬似乱数的に選択したlong値を返します。
    void
    setSeed(long seed)
    UnsupportedOperationExceptionをスローします。

    クラス java.util.Randomで宣言されたメソッド

    nextBoolean, nextBytes, nextDouble, nextFloat, nextGaussian, nextInt, nextLong

    クラス java.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    インタフェースjava.util.random.RandomGeneratorで宣言されたメソッド

    isDeprecated, nextExponential, nextGaussian
  • メソッドの詳細

    • current

      public static ThreadLocalRandom current()
      現在のスレッドThreadLocalRandomオブジェクトを返します。 このオブジェクトのメソッドは、他のスレッドではなく現在のスレッドによってのみコールする必要があります。
      戻り値:
      現在のスレッドのThreadLocalRandom
    • setSeed

      public void setSeed(long seed)
      UnsupportedOperationExceptionをスローします。 このジェネレータでのシードの設定はサポートされていません。
      オーバーライド:
      setSeed、クラスRandom
      パラメータ:
      seed - 初期シード
      例外:
      UnsupportedOperationException - 常時
    • next

      protected int next(int bits)
      示された下位ビット数の擬似乱数を生成します。 このクラスはサブクラスを持たないため、このメソッドは呼び出すことも、上書きすることもできません。
      オーバーライド:
      next、クラスRandom
      パラメータ:
      bits - ランダム・ビット
      戻り値:
      この乱数ジェネレータのシーケンスに基づく次の擬似乱数値
    • nextInt

      public int nextInt(int bound)
      この乱数ジェネレータのシーケンスを使って、0から指定された値の範囲(0は含むが、その指定された値は含まない)で一様分布のint型の擬似乱数値を返します。 nextIntの一般規約では、指定された範囲内の1つのint型の値が擬似乱数として生成されて返されます。 bound個のすべての可能なint値が(ほぼ)均等な確率で生成されます。
      定義:
      インタフェースRandomGenerator内のnextInt
      オーバーライド:
      nextInt、クラスRandom
      パラメータ:
      bound - 上限(含まない)。 正の値でなければならない
      戻り値:
      この乱数ジェネレータのシーケンスを使った、0(含む)からbound(含まない)の範囲で一様分布の、int型の次の擬似乱数値
      例外:
      IllegalArgumentException - boundが正でない場合
    • nextInt

      public int nextInt(int origin, int bound)
      指定された起点(inclusive)と指定された境界(exclusive)の間の擬似乱数的に選択したint値を返します。
      パラメータ:
      origin - 戻り値
      bound - 返される値の上限(exclusive)
      戻り値:
      起点(inclusive)と境界(exclusive)の間の擬似乱数的に選択したint
      例外:
      IllegalArgumentException - originboundより大きいか等しい場合
    • nextLong

      public long nextLong(long bound)
      ゼロ(inclusive)と指定した境界(exclusive)の間の擬似乱数的に選択したlong値を返します。
      パラメータ:
      bound - 返される値の上限(exclusive)。 正の値でなければならない
      戻り値:
      0 (inclusive)と境界(exclusive)の間の擬似乱数的に選択したlong
      例外:
      IllegalArgumentException - boundが正でない場合
    • nextLong

      public long nextLong(long origin, long bound)
      指定された起点(inclusive)と指定された境界(exclusive)の間の擬似乱数的に選択したlong値を返します。
      パラメータ:
      origin - 戻り値
      bound - 返される値の上限(exclusive)
      戻り値:
      起点(inclusive)と境界(exclusive)の間の擬似乱数的に選択したlong
      例外:
      IllegalArgumentException - originboundより大きいか等しい場合
    • nextFloat

      public float nextFloat(float bound)
      ゼロ(inclusive)と指定したバインド(exclusive)の間の擬似乱数的に選択したfloat値を返します。
      実装上のノート:
      パラメータ:
      bound - 返される値の上限(exclusive)。 正および有限である必要があります
      戻り値:
      0 (inclusive)とバインドされた(exclusive)の間の擬似乱数的に選択したfloat
      例外:
      IllegalArgumentException - boundが正と有限の両方でない場合
    • nextFloat

      public float nextFloat(float origin, float bound)
      指定された起点(inclusive)と指定された境界(exclusive)の間の擬似乱数的に選択したfloat値を返します。
      実装上のノート:
      パラメータ:
      origin - 戻り値
      bound - 上限(含まない)
      戻り値:
      起点(inclusive)と境界(exclusive)の間の擬似乱数的に選択したfloat
      例外:
      IllegalArgumentException - originが有限でない場合、またはboundが有限でない場合、またはoriginbound以上である場合
    • nextDouble

      public double nextDouble(double bound)
      ゼロ(inclusive)と指定した境界(exclusive)の間の擬似乱数的に選択したdouble値を返します。
      実装上のノート:
      パラメータ:
      bound - 返される値の上限(exclusive)。 正および有限である必要があります
      戻り値:
      0 (inclusive)と境界(exclusive)の間の擬似乱数的に選択したdouble
      例外:
      IllegalArgumentException - boundが正と有限の両方でない場合
    • nextDouble

      public double nextDouble(double origin, double bound)
      指定された起点(inclusive)と指定された境界(exclusive)の間の擬似乱数的に選択したdouble値を返します。
      実装上のノート:
      パラメータ:
      origin - 戻り値
      bound - 返される値の上限(exclusive)
      戻り値:
      起点(inclusive)と境界(exclusive)の間の擬似乱数的に選択したdouble
      例外:
      IllegalArgumentException - originが有限でない場合、またはboundが有限でない場合、またはoriginbound以上である場合
    • ints

      public IntStream ints(long streamSize)
      擬似乱数int値を、指定されたstreamSize数だけ生成するストリームを返します。

      メソッドRandom.nextInt()をコールした結果として、擬似乱数int値が生成されます。

      定義:
      インタフェースRandomGenerator内のints
      オーバーライド:
      ints、クラスRandom
      パラメータ:
      streamSize - 生成する値の数
      戻り値:
      擬似乱数int値のストリーム
      例外:
      IllegalArgumentException - streamSizeが0未満の場合
      導入されたバージョン:
      1.8
    • ints

      public IntStream ints()
      擬似乱数int値を含む、事実上無制限のストリームを返します。

      メソッドRandom.nextInt()をコールした結果として、擬似乱数int値が生成されます。

      定義:
      インタフェースRandomGenerator内のints
      オーバーライド:
      ints、クラスRandom
      実装上のノート:
      このメソッドは、ints(Long.MAX_VALUE)と同等であるように実装されます。
      戻り値:
      擬似乱数int値のストリーム
      導入されたバージョン:
      1.8
    • ints

      public IntStream ints(long streamSize, int randomNumberOrigin, int randomNumberBound)
      指定された起点(含む)と境界(含まない)に準拠した擬似乱数int値を、指定されたstreamSize数だけ生成するストリームを返します。

      起点と境界を指定した次のメソッド呼び出しの結果と同様に、擬似乱数int値が生成されます。

       
       int nextInt(int origin, int bound) {
         int n = bound - origin;
         if (n > 0) {
           return nextInt(n) + origin;
         }
         else {  // range not representable as int
           int r;
           do {
             r = nextInt();
           } while (r < origin || r >= bound);
           return r;
         }
       }

      定義:
      インタフェースRandomGenerator内のints
      オーバーライド:
      ints、クラスRandom
      パラメータ:
      streamSize - 生成する値の数
      randomNumberOrigin - 各乱数値の起点(含む)
      randomNumberBound - 各乱数値の境界(含まない)
      戻り値:
      それぞれ起点(含む)と境界(含まない)が指定された、擬似乱数int値のストリーム
      例外:
      IllegalArgumentException - streamSizeが0未満の場合、またはrandomNumberOriginrandomNumberBound以上の場合
      導入されたバージョン:
      1.8
    • ints

      public IntStream ints(int randomNumberOrigin, int randomNumberBound)
      指定された起点(含む)と境界(含まない)に準拠した擬似乱数 int値を含む、事実上無制限のストリームを返します。

      起点と境界を指定した次のメソッド呼び出しの結果と同様に、擬似乱数int値が生成されます。

       
       int nextInt(int origin, int bound) {
         int n = bound - origin;
         if (n > 0) {
           return nextInt(n) + origin;
         }
         else {  // range not representable as int
           int r;
           do {
             r = nextInt();
           } while (r < origin || r >= bound);
           return r;
         }
       }

      定義:
      インタフェースRandomGenerator内のints
      オーバーライド:
      ints、クラスRandom
      実装上のノート:
      このメソッドは、ints(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)と同等であるように実装されます。
      パラメータ:
      randomNumberOrigin - 各乱数値の起点(含む)
      randomNumberBound - 各乱数値の境界(含まない)
      戻り値:
      それぞれ起点(含む)と境界(含まない)が指定された、擬似乱数int値のストリーム
      例外:
      IllegalArgumentException - randomNumberOriginrandomNumberBound以上の場合
      導入されたバージョン:
      1.8
    • longs

      public LongStream longs(long streamSize)
      擬似乱数long値を、指定されたstreamSize数だけ生成するストリームを返します。

      メソッドRandom.nextLong()をコールした結果として、擬似乱数long値が生成されます。

      定義:
      インタフェースRandomGenerator内のlongs
      オーバーライド:
      longs、クラスRandom
      パラメータ:
      streamSize - 生成する値の数
      戻り値:
      擬似乱数long値のストリーム
      例外:
      IllegalArgumentException - streamSizeが0未満の場合
      導入されたバージョン:
      1.8
    • longs

      public LongStream longs()
      擬似乱数long値を含む、事実上無制限のストリームを返します。

      メソッドRandom.nextLong()をコールした結果として、擬似乱数long値が生成されます。

      定義:
      インタフェースRandomGenerator内のlongs
      オーバーライド:
      longs、クラスRandom
      実装上のノート:
      このメソッドは、longs(Long.MAX_VALUE)と同等であるように実装されます。
      戻り値:
      擬似乱数long値のストリーム
      導入されたバージョン:
      1.8
    • longs

      public LongStream longs(long streamSize, long randomNumberOrigin, long randomNumberBound)
      指定された起点(含む)と境界(含まない)に準拠した擬似乱数longを、指定されたstreamSize数だけ生成するストリームを返します。

      起点と境界を指定した次のメソッド呼び出しの結果と同様に、擬似乱数long値が生成されます。

       
       long nextLong(long origin, long bound) {
         long r = nextLong();
         long n = bound - origin, m = n - 1;
         if ((n & m) == 0L)  // power of two
           r = (r & m) + origin;
         else if (n > 0L) {  // reject over-represented candidates
           for (long u = r >>> 1;            // ensure nonnegative
                u + m - (r = u % n) < 0L;    // rejection check
                u = nextLong() >>> 1) // retry
               ;
           r += origin;
         }
         else {              // range not representable as long
           while (r < origin || r >= bound)
             r = nextLong();
         }
         return r;
       }

      定義:
      インタフェースRandomGenerator内のlongs
      オーバーライド:
      longs、クラスRandom
      パラメータ:
      streamSize - 生成する値の数
      randomNumberOrigin - 各乱数値の起点(含む)
      randomNumberBound - 各乱数値の境界(含まない)
      戻り値:
      それぞれ起点(含む)と境界(含まない)が指定された、擬似乱数long値のストリーム
      例外:
      IllegalArgumentException - streamSizeが0未満の場合、またはrandomNumberOriginrandomNumberBound以上の場合
      導入されたバージョン:
      1.8
    • longs

      public LongStream longs(long randomNumberOrigin, long randomNumberBound)
      指定された起点(含む)と境界(含まない)に準拠した擬似乱数 long値を含む、事実上無制限のストリームを返します。

      起点と境界を指定した次のメソッド呼び出しの結果と同様に、擬似乱数long値が生成されます。

       
       long nextLong(long origin, long bound) {
         long r = nextLong();
         long n = bound - origin, m = n - 1;
         if ((n & m) == 0L)  // power of two
           r = (r & m) + origin;
         else if (n > 0L) {  // reject over-represented candidates
           for (long u = r >>> 1;            // ensure nonnegative
                u + m - (r = u % n) < 0L;    // rejection check
                u = nextLong() >>> 1) // retry
               ;
           r += origin;
         }
         else {              // range not representable as long
           while (r < origin || r >= bound)
             r = nextLong();
         }
         return r;
       }

      定義:
      インタフェースRandomGenerator内のlongs
      オーバーライド:
      longs、クラスRandom
      実装上のノート:
      このメソッドは、longs(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)と同等であるように実装されます。
      パラメータ:
      randomNumberOrigin - 各乱数値の起点(含む)
      randomNumberBound - 各乱数値の境界(含まない)
      戻り値:
      それぞれ起点(含む)と境界(含まない)が指定された、擬似乱数long値のストリーム
      例外:
      IllegalArgumentException - randomNumberOriginrandomNumberBound以上の場合
      導入されたバージョン:
      1.8
    • doubles

      public DoubleStream doubles(long streamSize)
      0(含む)から1(含まない)までの擬似乱数double値を、指定されたstreamSize数だけ生成するストリームを返します。

      メソッドRandom.nextDouble()をコールした結果として、擬似乱数double値が生成されます。

      定義:
      インタフェースRandomGenerator内のdoubles
      オーバーライド:
      doubles、クラスRandom
      パラメータ:
      streamSize - 生成する値の数
      戻り値:
      double値のストリーム
      例外:
      IllegalArgumentException - streamSizeが0未満の場合
      導入されたバージョン:
      1.8
    • doubles

      public DoubleStream doubles()
      0(含む)から1(含まない)までの擬似乱数 double値を含む、事実上無制限のストリームを返します。

      メソッドRandom.nextDouble()をコールした結果として、擬似乱数double値が生成されます。

      定義:
      インタフェースRandomGenerator内のdoubles
      オーバーライド:
      doubles、クラスRandom
      実装上のノート:
      このメソッドは、doubles(Long.MAX_VALUE)と同等であるように実装されます。
      戻り値:
      擬似乱数double値のストリーム
      導入されたバージョン:
      1.8
    • doubles

      public DoubleStream doubles(long streamSize, double randomNumberOrigin, double randomNumberBound)
      指定された起点(含む)と境界(含まない)に準拠した擬似乱数double値を、指定されたstreamSize数だけ生成するストリームを返します。

      起点と境界を指定した次のメソッド呼び出しの結果と同様に、擬似乱数double値が生成されます。

       
       double nextDouble(double origin, double bound) {
         double r = nextDouble();
         r = r * (bound - origin) + origin;
         if (r >= bound) // correct for rounding
           r = Math.nextDown(bound);
         return r;
       }

      定義:
      インタフェースRandomGenerator内のdoubles
      オーバーライド:
      doubles、クラスRandom
      パラメータ:
      streamSize - 生成する値の数
      randomNumberOrigin - 各乱数値の起点(含む)
      randomNumberBound - 各乱数値の境界(含まない)
      戻り値:
      それぞれ起点(含む)と限界(含まない)が指定された、擬似乱数double値のストリーム
      例外:
      IllegalArgumentException - streamSizeがゼロ未満またはrandomNumberOriginが有限でない場合、またはrandomNumberBoundが有限でない場合、またはrandomNumberOriginrandomNumberBound以上である場合
      導入されたバージョン:
      1.8
    • doubles

      public DoubleStream doubles(double randomNumberOrigin, double randomNumberBound)
      指定された起点(含む)と境界(含まない)に準拠した擬似乱数 double値を含む、事実上無制限のストリームを返します。

      起点と境界を指定した次のメソッド呼び出しの結果と同様に、擬似乱数double値が生成されます。

       
       double nextDouble(double origin, double bound) {
         double r = nextDouble();
         r = r * (bound - origin) + origin;
         if (r >= bound) // correct for rounding
           r = Math.nextDown(bound);
         return r;
       }

      定義:
      インタフェースRandomGenerator内のdoubles
      オーバーライド:
      doubles、クラスRandom
      実装上のノート:
      このメソッドは、doubles(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)と同等であるように実装されます。
      パラメータ:
      randomNumberOrigin - 各乱数値の起点(含む)
      randomNumberBound - 各乱数値の境界(含まない)
      戻り値:
      それぞれ起点(含む)と限界(含まない)が指定された、擬似乱数double値のストリーム
      例外:
      IllegalArgumentException - randomNumberOriginrandomNumberBound以上の場合
      導入されたバージョン:
      1.8