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, nextLong
public static ThreadLocalRandom current()
ThreadLocalRandom
を返します。ThreadLocalRandom
public void setSeed(long seed)
UnsupportedOperationException
をスローします。このジェネレータでのシードの設定はサポートされていません。setSeed
、クラス: Random
seed
- 初期シードUnsupportedOperationException
- 常時protected int next(int bits)
Random
next
の一般規約では、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.