- java.lang.Object
-
- java.util.Random
-
- java.util.concurrent.ThreadLocalRandom
-
- すべての実装されたインタフェース:
Serializable
public class ThreadLocalRandom extends Random
現在のスレッドから独立した隔離された乱数ジェネレータ。Mathクラスによって使用されるグローバルなRandomジェネレータと同様に、ThreadLocalRandomは、それ以外では変更できない内部的に生成されたシードで初期化されます。 該当する場合、並行プログラム内の共有されたRandomオブジェクトではなくThreadLocalRandomを使用すれば、通常、発生するオーバーヘッドや競合がはるかに少なくなります。ThreadLocalRandomの使用は、複数のタスク(たとえば、各ForkJoinTask)がスレッド・プール内で並列に乱数を使用している場合に特に適しています。このクラスの使用法は通常、
ThreadLocalRandom.current().nextX(...)(ここで、XはIntやLongなど)の形式にするようにしてください。 すべての使用法がこの形式になっていれば、ThreadLocalRandomが複数のスレッド間で誤って共有されることはありえません。このクラスはまた、追加の一般的に使用される制約付きランダム生成メソッドも提供します。
ThreadLocalRandomのインスタンスにはセキュアな暗号化が施されていません。 セキュリティに依存するアプリケーションでは、かわりにSecureRandomの使用を検討してください。 また、システム・プロパティjava.util.secureRandomSeedをtrueに設定しないかぎり、デフォルトで構築されるインスタンスは暗号化処理に乱数シードを使用しません。- 導入されたバージョン:
- 1.7
- 関連項目:
- 直列化された形式
-
-
メソッドのサマリー
すべてのメソッド staticメソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 static ThreadLocalRandomcurrent()現在のスレッドのThreadLocalRandomを返します。DoubleStreamdoubles()0(含む)から1(含まない)までの擬似乱数double値を含む、事実上無制限のストリームを返します。DoubleStreamdoubles(double randomNumberOrigin, double randomNumberBound)指定された起点(含む)と境界(含まない)に準拠した擬似乱数double値を含む、事実上無制限のストリームを返します。DoubleStreamdoubles(long streamSize)0(含む)から1(含まない)までの擬似乱数double値を、streamSizeに指定された数だけ生成するストリームを返します。DoubleStreamdoubles(long streamSize, double randomNumberOrigin, double randomNumberBound)指定された起点(含む)と境界(含まない)に準拠した擬似乱数double値を、streamSizeに指定された数だけ生成するストリームを返します。IntStreamints()擬似乱数int値を含む事実上無限のストリームを返します。IntStreamints(int randomNumberOrigin, int randomNumberBound)指定された起点(含む)と境界(含まない)に準拠した擬似乱数int値を含む、事実上無制限のストリームを返します。IntStreamints(long streamSize)擬似乱数int値をstreamSizeに指定された数だけ生成するストリームを返します。IntStreamints(long streamSize, int randomNumberOrigin, int randomNumberBound)指定された起点(含む)と境界(含まない)に準拠した擬似乱数int値をstreamSizeに指定された数だけ生成するストリームを返します。LongStreamlongs()擬似乱数long値を含む事実上無限のストリームを返します。LongStreamlongs(long streamSize)擬似乱数long値をstreamSizeに指定された数だけ生成するストリームを返します。LongStreamlongs(long randomNumberOrigin, long randomNumberBound)指定された起点(含む)と境界(含まない)に準拠した擬似乱数long値を含む、事実上無制限のストリームを返します。LongStreamlongs(long streamSize, long randomNumberOrigin, long randomNumberBound)指定された起点(含む)と境界(含まない)に準拠した擬似乱数longをstreamSizeに指定された数だけ生成するストリームを返します。protected intnext(int bits)示された下位ビット数の擬似乱数を生成します。booleannextBoolean()擬似乱数のboolean値を返します。doublenextDouble()0(これを含む)から1(これを含まない)までの範囲で、擬似乱数のdouble値を返します。doublenextDouble(double bound)0.0(これを含む)から指定された限界(これを含まない)までの範囲で、擬似乱数のdouble値を返します。doublenextDouble(double origin, double bound)指定された起点(これを含む)から限界(これを含まない)までの範囲で、擬似乱数のdouble値を返します。floatnextFloat()0(これを含む)から1(これを含まない)までの範囲で、擬似乱数のfloat値を返します。doublenextGaussian()この乱数ジェネレータのシーケンスを使って、平均0.0、標準偏差1.0のガウス(「正規」)分布のdouble型の擬似乱数値を返します。intnextInt()擬似乱数のint値を返します。intnextInt(int bound)0(これを含む)から指定された限界(これを含まない)までの範囲で、擬似乱数のint値を返します。intnextInt(int origin, int bound)指定された起点(これを含む)から指定された限界(これを含まない)までの範囲で、擬似乱数のint値を返します。longnextLong()擬似乱数のlong値を返します。longnextLong(long bound)0(これを含む)から指定された限界(これを含まない)までの範囲で、擬似乱数のlong値を返します。longnextLong(long origin, long bound)指定された起点(これを含む)から指定された限界(これを含まない)までの範囲で、擬似乱数のlong値を返します。voidsetSeed(long seed)UnsupportedOperationExceptionをスローします。
-
-
-
メソッドの詳細
-
current
public static ThreadLocalRandom current()
現在のスレッドのThreadLocalRandomを返します。- 戻り値:
- 現在のスレッドの
ThreadLocalRandom
-
setSeed
public void setSeed(long seed)
UnsupportedOperationExceptionをスローします。 このジェネレータでのシードの設定はサポートされていません。- オーバーライド:
setSeed、クラス:Random- パラメータ:
seed- 初期シード- 例外:
UnsupportedOperationException- 常時
-
next
protected int next(int bits)
示された下位ビット数の擬似乱数を生成します。 このクラスはサブクラスを持たないため、このメソッドは呼び出すことも、上書きすることもできません。
-
nextInt
public int nextInt(int bound)
0(これを含む)から指定された限界(これを含まない)までの範囲で、擬似乱数のint値を返します。- オーバーライド:
nextInt、クラス:Random- パラメータ:
bound- 上限(含まない)。 正の値でなければならない。- 戻り値:
- 0(これを含む)から限界(これを含まない)までの、擬似乱数の
int値 - 例外:
IllegalArgumentException-boundが正でない場合
-
nextInt
public int nextInt(int origin, int bound)指定された起点(これを含む)から指定された限界(これを含まない)までの範囲で、擬似乱数のint値を返します。- パラメータ:
origin- 返される最小の値bound- 上限(含まない)- 戻り値:
- 起点(これを含む)から限界(これを含まない)までの、擬似乱数の
int値 - 例外:
IllegalArgumentException-originがboundより大きいか等しい場合
-
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-originがboundより大きいか等しい場合
-
nextDouble
public double nextDouble()
0(これを含む)から1(これを含まない)までの範囲で、擬似乱数のdouble値を返します。- オーバーライド:
nextDouble、クラス:Random- 戻り値:
- 0(これを含む)から1(これを含まない)までの、擬似乱数の
double値 - 関連項目:
Math.random()
-
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-originがboundより大きいか等しい場合
-
nextBoolean
public boolean nextBoolean()
擬似乱数のboolean値を返します。- オーバーライド:
nextBoolean、クラス:Random- 戻り値:
- 擬似乱数の
boolean値
-
nextFloat
public float nextFloat()
0(これを含む)から1(これを含まない)までの範囲で、擬似乱数のfloat値を返します。
-
nextGaussian
public double nextGaussian()
次のクラスからコピーされた説明:Randomこの乱数ジェネレータのシーケンスを使って、平均0.0、標準偏差1.0のガウス(「正規」)分布のdouble型の擬似乱数値を返します。nextGaussianの一般規約では、平均0.0、標準偏差1.0のほぼ通常の正規分布から選択された1つのdouble値が、擬似乱数として生成されて返されます。RandomクラスによるnextGaussianメソッドの実装は、次のスレッド・セーフなバージョンと同等です。
polar methodを使用します - これは、G. E. P. Box、M. E. Muller、およびG. Marsaglia、Donald E. Knuth著『The Art of Computer Programming』第2巻『Seminumerical Algorithms』のセクション3.4.1のC、アルゴリズムPで説明されています。private double nextNextGaussian; private boolean haveNextNextGaussian = false; public double nextGaussian() { if (haveNextNextGaussian) { haveNextNextGaussian = false; return nextNextGaussian; } else { double v1, v2, s; do { v1 = 2 * nextDouble() - 1; // between -1.0 and 1.0 v2 = 2 * nextDouble() - 1; // between -1.0 and 1.0 s = v1 * v1 + v2 * v2; } while (s >= 1 || s == 0); double multiplier = StrictMath.sqrt(-2 * StrictMath.log(s)/s); nextNextGaussian = v2 * multiplier; haveNextNextGaussian = true; return v1 * multiplier; } }StrictMath.logとStrictMath.sqrtの1回ずつの呼び出しだけで2つの別々の値を生成することに注意してください。- オーバーライド:
nextGaussian、クラス:Random- 戻り値:
- この乱数ジェネレータのシーケンスを使った、平均
0.0、標準偏差1.0のガウス(「正規」)分布のdouble型の次の擬似乱数値
-
ints
public IntStream ints(long streamSize)
擬似乱数int値をstreamSizeに指定された数だけ生成するストリームを返します。- オーバーライド:
ints、クラス:Random- パラメータ:
streamSize- 生成する値の数- 戻り値:
- 擬似乱数の
int値のストリーム - 例外:
IllegalArgumentException-streamSizeが0より小さい場合- 導入されたバージョン:
- 1.8
-
ints
public IntStream ints()
擬似乱数int値を含む事実上無限のストリームを返します。
-
ints
public IntStream ints(long streamSize, int randomNumberOrigin, int randomNumberBound)
指定された起点(含む)と境界(含まない)に準拠した擬似乱数int値をstreamSizeに指定された数だけ生成するストリームを返します。- オーバーライド:
ints、クラス:Random- パラメータ:
streamSize- 生成する値の数randomNumberOrigin- 各乱数値の起点(これを含む)randomNumberBound- 各乱数値の限界(これを含まない)- 戻り値:
- それぞれ指定された起点(これを含む)と限界(これを含まない)を持つ擬似乱数の
int値のストリーム - 例外:
IllegalArgumentException-streamSizeが0より小さい場合、またはrandomNumberOriginがrandomNumberBoundより大きいか等しい場合- 導入されたバージョン:
- 1.8
-
ints
public IntStream ints(int randomNumberOrigin, int randomNumberBound)
指定された起点(含む)と境界(含まない)に準拠した擬似乱数int値を含む、事実上無制限のストリームを返します。- オーバーライド:
ints、クラス:Random- 実装上の注意:
- このメソッドは、
ints(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)と同等であるように実装されます。 - パラメータ:
randomNumberOrigin- 各乱数値の起点(これを含む)randomNumberBound- 各乱数値の限界(これを含まない)- 戻り値:
- それぞれ指定された起点(これを含む)と限界(これを含まない)を持つ擬似乱数の
int値のストリーム - 例外:
IllegalArgumentException-randomNumberOriginがrandomNumberBoundより大きいか等しい場合- 導入されたバージョン:
- 1.8
-
longs
public LongStream longs(long streamSize)
擬似乱数long値をstreamSizeに指定された数だけ生成するストリームを返します。- オーバーライド:
longs、クラス:Random- パラメータ:
streamSize- 生成する値の数- 戻り値:
- 擬似乱数の
long値のストリーム - 例外:
IllegalArgumentException-streamSizeが0より小さい場合- 導入されたバージョン:
- 1.8
-
longs
public LongStream longs()
擬似乱数long値を含む事実上無限のストリームを返します。
-
longs
public LongStream longs(long streamSize, long randomNumberOrigin, long randomNumberBound)
指定された起点(含む)と境界(含まない)に準拠した擬似乱数longをstreamSizeに指定された数だけ生成するストリームを返します。- オーバーライド:
longs、クラス:Random- パラメータ:
streamSize- 生成する値の数randomNumberOrigin- 各乱数値の起点(これを含む)randomNumberBound- 各乱数値の限界(これを含まない)- 戻り値:
- それぞれ指定された起点(これを含む)と限界(これを含まない)を持つ擬似乱数の
long値のストリーム - 例外:
IllegalArgumentException-streamSizeが0より小さい場合、またはrandomNumberOriginがrandomNumberBoundより大きいか等しい場合- 導入されたバージョン:
- 1.8
-
longs
public LongStream longs(long randomNumberOrigin, long randomNumberBound)
指定された起点(含む)と境界(含まない)に準拠した擬似乱数long値を含む、事実上無制限のストリームを返します。- オーバーライド:
longs、クラス:Random- 実装上の注意:
- このメソッドは、
longs(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)と同等であるように実装されます。 - パラメータ:
randomNumberOrigin- 各乱数値の起点(これを含む)randomNumberBound- 各乱数値の限界(これを含まない)- 戻り値:
- それぞれ指定された起点(これを含む)と限界(これを含まない)を持つ擬似乱数の
long値のストリーム - 例外:
IllegalArgumentException-randomNumberOriginがrandomNumberBoundより大きいか等しい場合- 導入されたバージョン:
- 1.8
-
doubles
public DoubleStream doubles(long streamSize)
0(含む)から1(含まない)までの擬似乱数double値を、streamSizeに指定された数だけ生成するストリームを返します。- オーバーライド:
doubles、クラス:Random- パラメータ:
streamSize- 生成する値の数- 戻り値:
double値のストリーム- 例外:
IllegalArgumentException-streamSizeが0より小さい場合- 導入されたバージョン:
- 1.8
-
doubles
public DoubleStream doubles()
0(含む)から1(含まない)までの擬似乱数double値を含む、事実上無制限のストリームを返します。
-
doubles
public DoubleStream doubles(long streamSize, double randomNumberOrigin, double randomNumberBound)
指定された起点(含む)と境界(含まない)に準拠した擬似乱数double値を、streamSizeに指定された数だけ生成するストリームを返します。- オーバーライド:
doubles、クラス:Random- パラメータ:
streamSize- 生成する値の数randomNumberOrigin- 各乱数値の起点(これを含む)randomNumberBound- 各乱数値の限界(これを含まない)- 戻り値:
- それぞれ指定された起点(これを含む)と限界(これを含まない)を持つ擬似乱数の
double値のストリーム - 例外:
IllegalArgumentException-streamSizeが0未満の場合、またはrandomNumberOriginがrandomNumberBound以上の場合- 導入されたバージョン:
- 1.8
-
doubles
public DoubleStream doubles(double randomNumberOrigin, double randomNumberBound)
指定された起点(含む)と境界(含まない)に準拠した擬似乱数double値を含む、事実上無制限のストリームを返します。- オーバーライド:
doubles、クラス:Random- 実装上の注意:
- このメソッドは、
doubles(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)と同等であるように実装されます。 - パラメータ:
randomNumberOrigin- 各乱数値の起点(これを含む)randomNumberBound- 各乱数値の限界(これを含まない)- 戻り値:
- それぞれ指定された起点(これを含む)と限界(これを含まない)を持つ擬似乱数の
double値のストリーム - 例外:
IllegalArgumentException-randomNumberOriginがrandomNumberBoundより大きいか等しい場合- 導入されたバージョン:
- 1.8
-
-