- すべての実装されたインタフェース:
- Serializable,- RandomGenerator
Mathクラスによって使用されるグローバルなRandomジェネレータと同様に、ThreadLocalRandomは、それ以外では変更できない内部的に生成されたシードで初期化されます。 該当する場合、並行プログラム内の共有されたRandomオブジェクトではなくThreadLocalRandomを使用すれば、通常、発生するオーバーヘッドや競合がはるかに少なくなります。 ThreadLocalRandomの使用は、複数のタスク(たとえば、各ForkJoinTask)がスレッド・プール内で並列に乱数を使用している場合に特に適しています。 
 このクラスの使用法は通常、ThreadLocalRandom.current().nextX(...) (ここで、XはIntやLongなど)の形式にするようにしてください。 すべての使用方法がこの形式である場合、誤って複数のスレッドでThreadLocalRandomを共有することはできません。 
 
このクラスはまた、追加の一般的に使用される制約付きランダム生成メソッドも提供します。
ThreadLocalRandomのインスタンスにはセキュアな暗号化が施されていません。 セキュリティに依存するアプリケーションでは、かわりにSecureRandomの使用を検討してください。 また、システム・プロパティjava.util.secureRandomSeedをtrueに設定しないかぎり、デフォルトで構築されるインスタンスは暗号化処理に乱数シードを使用しません。 
- 導入されたバージョン:
- 1.7
- 関連項目:
- 
ネストされたクラスのサマリーインタフェースjava.util.random.RandomGeneratorで宣言されたネストされたクラス/インタフェースRandomGenerator.ArbitrarilyJumpableGenerator, RandomGenerator.JumpableGenerator, RandomGenerator.LeapableGenerator, RandomGenerator.SplittableGenerator, RandomGenerator.StreamableGenerator
- 
メソッドのサマリー修飾子と型メソッド説明static ThreadLocalRandomcurrent()現在のスレッドThreadLocalRandomオブジェクトを返します。doubles()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数だけ生成するストリームを返します。ints()擬似乱数int値を含む、事実上無制限のストリームを返します。ints(int randomNumberOrigin, int randomNumberBound) 指定された起点(含む)と境界(含まない)に準拠した擬似乱数int値を含む、事実上無制限のストリームを返します。ints(long streamSize) 擬似乱数int値を、指定されたstreamSize数だけ生成するストリームを返します。ints(long streamSize, int randomNumberOrigin, int randomNumberBound) 指定された起点(含む)と境界(含まない)に準拠した擬似乱数int値を、指定されたstreamSize数だけ生成するストリームを返します。longs()擬似乱数long値を含む、事実上無制限のストリームを返します。longs(long streamSize) 擬似乱数long値を、指定されたstreamSize数だけ生成するストリームを返します。longs(long randomNumberOrigin, long randomNumberBound) 指定された起点(含む)と境界(含まない)に準拠した擬似乱数long値を含む、事実上無制限のストリームを返します。longs(long streamSize, long randomNumberOrigin, long randomNumberBound) 指定された起点(含む)と境界(含まない)に準拠した擬似乱数longを、指定されたstreamSize数だけ生成するストリームを返します。protected intnext(int bits) 示された下位ビット数の擬似乱数を生成します。doublenextDouble(double bound) ゼロ(inclusive)と指定した境界(exclusive)の間の擬似乱数的に選択したdouble値を返します。doublenextDouble(double origin, double bound) 指定された起点(inclusive)と指定された境界(exclusive)の間の擬似乱数的に選択したdouble値を返します。floatnextFloat(float bound) ゼロ(inclusive)と指定したバインド(exclusive)の間の擬似乱数的に選択したfloat値を返します。floatnextFloat(float origin, float bound) 指定された起点(inclusive)と指定された境界(exclusive)の間の擬似乱数的に選択したfloat値を返します。intnextInt(int bound) この乱数ジェネレータのシーケンスを使って、0から指定された値の範囲(0は含むが、その指定された値は含まない)で一様分布のint型の擬似乱数値を返します。intnextInt(int origin, int bound) 指定された起点(inclusive)と指定された境界(exclusive)の間の擬似乱数的に選択したint値を返します。longnextLong(long bound) ゼロ(inclusive)と指定した境界(exclusive)の間の擬似乱数的に選択したlong値を返します。longnextLong(long origin, long bound) 指定された起点(inclusive)と指定された境界(exclusive)の間の擬似乱数的に選択したlong値を返します。voidsetSeed(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
- 
メソッドの詳細- 
currentpublic static ThreadLocalRandom current()現在のスレッドThreadLocalRandomオブジェクトを返します。 このオブジェクトのメソッドは、他のスレッドではなく現在のスレッドによってのみコールする必要があります。- 戻り値:
- 現在のスレッドのThreadLocalRandom
 
- 
setSeedpublic void setSeed(long seed) UnsupportedOperationExceptionをスローします。 このジェネレータでのシードの設定はサポートされていません。- オーバーライド:
- setSeed、クラス- Random
- パラメータ:
- seed- 初期シード
- throws:
- UnsupportedOperationException- 常時
 
- 
nextprotected int next(int bits) 示された下位ビット数の擬似乱数を生成します。 このクラスはサブクラスを持たないため、このメソッドは呼び出すことも、上書きすることもできません。
- 
nextIntpublic int nextInt(int bound) この乱数ジェネレータのシーケンスを使って、0から指定された値の範囲(0は含むが、その指定された値は含まない)で一様分布のint型の擬似乱数値を返します。nextIntの一般規約では、指定された範囲内の1つのint型の値が擬似乱数として生成されて返されます。bound個のすべての可能なint値が(ほぼ)均等な確率で生成されます。- 定義:
- インタフェースRandomGenerator内のnextInt
- オーバーライド:
- nextInt、クラス- Random
- パラメータ:
- bound- 上限(含まない)。 正の値でなければならない
- 戻り値:
- この乱数ジェネレータのシーケンスを使った、0(含む)からbound(含まない)の範囲で一様分布の、int型の次の擬似乱数値
- throws:
- IllegalArgumentException- boundが正でない場合
 
- 
nextIntpublic int nextInt(int origin, int bound) 指定された起点(inclusive)と指定された境界(exclusive)の間の擬似乱数的に選択したint値を返します。- パラメータ:
- origin- 戻り値
- bound- 返される値の上限(exclusive)
- 戻り値:
- 起点(inclusive)と境界(exclusive)の間の擬似乱数的に選択したint値
- throws:
- IllegalArgumentException-- originが- boundより大きいか等しい場合
 
- 
nextLongpublic long nextLong(long bound) ゼロ(inclusive)と指定した境界(exclusive)の間の擬似乱数的に選択したlong値を返します。- パラメータ:
- bound- 返される値の上限(exclusive)。 正の値でなければならない
- 戻り値:
- 0 (inclusive)と境界(exclusive)の間の擬似乱数的に選択したlong値
- throws:
- IllegalArgumentException-- boundが正でない場合
 
- 
nextLongpublic long nextLong(long origin, long bound) 指定された起点(inclusive)と指定された境界(exclusive)の間の擬似乱数的に選択したlong値を返します。- パラメータ:
- origin- 戻り値
- bound- 返される値の上限(exclusive)
- 戻り値:
- 起点(inclusive)と境界(exclusive)の間の擬似乱数的に選択したlong値
- throws:
- IllegalArgumentException-- originが- boundより大きいか等しい場合
 
- 
nextFloatpublic float nextFloat(float bound) ゼロ(inclusive)と指定したバインド(exclusive)の間の擬似乱数的に選択したfloat値を返します。- 実装上のノート:
- パラメータ:
- bound- 返される値の上限(exclusive)。 正および有限である必要があります
- 戻り値:
- 0 (inclusive)とバインドされた(exclusive)の間の擬似乱数的に選択したfloat値
- throws:
- IllegalArgumentException-- boundが正と有限の両方でない場合
 
- 
nextFloatpublic float nextFloat(float origin, float bound) 指定された起点(inclusive)と指定された境界(exclusive)の間の擬似乱数的に選択したfloat値を返します。- 実装上のノート:
- パラメータ:
- origin- 戻り値
- bound- 上限(含まない)
- 戻り値:
- 起点(inclusive)と境界(exclusive)の間の擬似乱数的に選択したfloat値
- throws:
- IllegalArgumentException-- originが有限でない場合、または- boundが有限でない場合、または- originが- bound以上である場合
 
- 
nextDoublepublic double nextDouble(double bound) ゼロ(inclusive)と指定した境界(exclusive)の間の擬似乱数的に選択したdouble値を返します。- 実装上のノート:
- パラメータ:
- bound- 返される値の上限(exclusive)。 正および有限である必要があります
- 戻り値:
- 0 (inclusive)と境界(exclusive)の間の擬似乱数的に選択したdouble値
- throws:
- IllegalArgumentException-- boundが正と有限の両方でない場合
 
- 
nextDoublepublic double nextDouble(double origin, double bound) 指定された起点(inclusive)と指定された境界(exclusive)の間の擬似乱数的に選択したdouble値を返します。- 実装上のノート:
- パラメータ:
- origin- 戻り値
- bound- 返される値の上限(exclusive)
- 戻り値:
- 起点(inclusive)と境界(exclusive)の間の擬似乱数的に選択したdouble値
- throws:
- IllegalArgumentException-- originが有限でない場合、または- boundが有限でない場合、または- originが- bound以上である場合
 
- 
intspublic IntStream ints(long streamSize) 擬似乱数int値を、指定されたstreamSize数だけ生成するストリームを返します。メソッド Random.nextInt()をコールした結果として、擬似乱数int値が生成されます。- 定義:
- インタフェースRandomGenerator内のints
- オーバーライド:
- ints、クラス- Random
- パラメータ:
- streamSize- 生成する値の数
- 戻り値:
- 擬似乱数int値のストリーム
- throws:
- IllegalArgumentException-- streamSizeが0未満の場合
- 導入されたバージョン:
- 1.8
 
- 
intspublic IntStream ints()擬似乱数int値を含む、事実上無制限のストリームを返します。メソッド Random.nextInt()をコールした結果として、擬似乱数int値が生成されます。- 定義:
- インタフェースRandomGenerator内のints
- オーバーライド:
- ints、クラス- Random
- 実装上のノート:
- このメソッドは、ints(Long.MAX_VALUE)と同等であるように実装されます。
- 戻り値:
- 擬似乱数int値のストリーム
- 導入されたバージョン:
- 1.8
 
- 
intspublic 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値のストリーム
- throws:
- IllegalArgumentException-- streamSizeが0未満の場合、または- randomNumberOriginが- randomNumberBound以上の場合
- 導入されたバージョン:
- 1.8
 
- 
intspublic 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値のストリーム
- throws:
- IllegalArgumentException-- randomNumberOriginが- randomNumberBound以上の場合
- 導入されたバージョン:
- 1.8
 
- 
longspublic LongStream longs(long streamSize) 擬似乱数long値を、指定されたstreamSize数だけ生成するストリームを返します。メソッド Random.nextLong()をコールした結果として、擬似乱数long値が生成されます。- 定義:
- インタフェースRandomGenerator内のlongs
- オーバーライド:
- longs、クラス- Random
- パラメータ:
- streamSize- 生成する値の数
- 戻り値:
- 擬似乱数long値のストリーム
- throws:
- IllegalArgumentException-- streamSizeが0未満の場合
- 導入されたバージョン:
- 1.8
 
- 
longspublic LongStream longs()擬似乱数long値を含む、事実上無制限のストリームを返します。メソッド Random.nextLong()をコールした結果として、擬似乱数long値が生成されます。- 定義:
- インタフェースRandomGenerator内のlongs
- オーバーライド:
- longs、クラス- Random
- 実装上のノート:
- このメソッドは、longs(Long.MAX_VALUE)と同等であるように実装されます。
- 戻り値:
- 擬似乱数long値のストリーム
- 導入されたバージョン:
- 1.8
 
- 
longspublic 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値のストリーム
- throws:
- IllegalArgumentException-- streamSizeが0未満の場合、または- randomNumberOriginが- randomNumberBound以上の場合
- 導入されたバージョン:
- 1.8
 
- 
longspublic 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値のストリーム
- throws:
- IllegalArgumentException-- randomNumberOriginが- randomNumberBound以上の場合
- 導入されたバージョン:
- 1.8
 
- 
doublespublic DoubleStream doubles(long streamSize) 0(含む)から1(含まない)までの擬似乱数double値を、指定されたstreamSize数だけ生成するストリームを返します。メソッド Random.nextDouble()をコールした結果として、擬似乱数double値が生成されます。- 定義:
- インタフェースRandomGenerator内のdoubles
- オーバーライド:
- doubles、クラス- Random
- パラメータ:
- streamSize- 生成する値の数
- 戻り値:
- double値のストリーム
- throws:
- IllegalArgumentException-- streamSizeが0未満の場合
- 導入されたバージョン:
- 1.8
 
- 
doublespublic DoubleStream doubles()0(含む)から1(含まない)までの擬似乱数double値を含む、事実上無制限のストリームを返します。メソッド Random.nextDouble()をコールした結果として、擬似乱数double値が生成されます。- 定義:
- インタフェースRandomGenerator内のdoubles
- オーバーライド:
- doubles、クラス- Random
- 実装上のノート:
- このメソッドは、doubles(Long.MAX_VALUE)と同等であるように実装されます。
- 戻り値:
- 擬似乱数double値のストリーム
- 導入されたバージョン:
- 1.8
 
- 
doublespublic 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値のストリーム
- throws:
- IllegalArgumentException-- streamSizeがゼロ未満または- randomNumberOriginが有限でない場合、または- randomNumberBoundが有限でない場合、または- randomNumberOriginが- randomNumberBound以上である場合
- 導入されたバージョン:
- 1.8
 
- 
doublespublic 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値のストリーム
- throws:
- IllegalArgumentException-- randomNumberOriginが- randomNumberBound以上の場合
- 導入されたバージョン:
- 1.8
 
 
-