public class ThreadLocalRandom extends Random
Math クラスによって使用されるグローバルな Random ジェネレータと同様に、ThreadLocalRandom は、それ以外では変更できない内部的に生成されたシードで初期化されます。該当する場合、並行プログラム内の共有された Random オブジェクトではなく ThreadLocalRandom を使用すれば、通常、発生するオーバーヘッドや競合がはるかに少なくなります。ThreadLocalRandom の使用は、複数のタスク (たとえば、各 ForkJoinTask) がスレッドプール内で並列に乱数を使用している場合に特に適しています。
このクラスの使用法は通常、ThreadLocalRandom.current().nextX(...) (ここで、X は Int や Long など) の形式にするようにしてください。すべての使用法がこの形式になっていれば、ThreadLocalRandom が複数のスレッド間で誤って共有されることはありえません。
このクラスはまた、追加の一般的に使用される制約付きランダム生成メソッドも提供します。
| 修飾子と型 | メソッドと説明 |
|---|---|
static ThreadLocalRandom |
current()
現在のスレッドの
ThreadLocalRandom を返します。 |
protected int |
next(int bits)
次の擬似乱数を生成します。
|
double |
nextDouble(double n)
0 から指定された値の範囲 (0 は含むが、その指定された値は含まない) で一様分布の
double 型擬似乱数を返します。 |
double |
nextDouble(double least, double bound)
指定された最小値から境界までの範囲 (最小値は含むが、境界は含まない) で一様分布の擬似乱数を返します。
|
int |
nextInt(int least, int bound)
指定された最小値から境界までの範囲 (最小値は含むが、境界は含まない) で一様分布の擬似乱数を返します。
|
long |
nextLong(long n)
0 から指定された値の範囲 (0 は含むが、その指定された値は含まない) で一様分布の擬似乱数を返します。
|
long |
nextLong(long least, long bound)
指定された最小値から境界までの範囲 (最小値は含むが、境界は含まない) で一様分布の擬似乱数を返します。
|
void |
setSeed(long seed)
UnsupportedOperationException をスローします。 |
nextBoolean, nextBytes, nextDouble, nextFloat, nextGaussian, nextInt, nextInt, nextLongpublic static ThreadLocalRandom current()
ThreadLocalRandom を返します。ThreadLocalRandompublic void setSeed(long seed)
UnsupportedOperationException をスローします。このジェネレータでのシードの設定はサポートされていません。setSeed、クラス: Randomseed - 初期シードUnsupportedOperationException - 常時protected int next(int bits)
Randomnext の一般規約では、int 型の値を返し、引数 bits が 1 から 32 (1 と 32 を含む) の範囲の場合は、戻り値の多くの下位ビットが (ほぼ) 独立に選択されたビット値になり、それぞれの値は (ほぼ) 均等に 0 または 1 になります。Random クラスによる next メソッドの実装では、シードを次のように原始的に更新します。
(seed * 0x5DEECE66DL + 0xBL) & ((1L << 48) - 1)
に原始的に更新し、次の値を返します。
(int)(seed >>> (48 - bits)).
これは、D. H. Lehmer によって定義された、線形合同擬似乱数ジェネレータです。詳細は Donald Knuth 著『The Art of Computer Programming, Volume 3: Seminumerical Algorithms』のセクション 3.2.1 を参照してください。public int nextInt(int least,
int bound)
least - 返される最小値bound - 上限 (含まない)IllegalArgumentException - 最小値が境界よりも大きいか等しい場合public long nextLong(long n)
n - 返される乱数の限界値。正の値でなければならない。IllegalArgumentException - n が正でない場合public long nextLong(long least,
long bound)
least - 返される最小値bound - 上限 (含まない)IllegalArgumentException - 最小値が境界よりも大きいか等しい場合public double nextDouble(double n)
double 型擬似乱数を返します。n - 返される乱数の限界値。正の値でなければならない。IllegalArgumentException - n が正でない場合public double nextDouble(double least,
double bound)
least - 返される最小値bound - 上限 (含まない)IllegalArgumentException - 最小値が境界よりも大きいか等しい場合 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.