- すべての実装されたインタフェース:
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で宣言されたメソッド
from, 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) 示された下位ビット数の擬似乱数を生成します。 このクラスはサブクラスを持たないため、このメソッドは呼び出すことも、上書きすることもできません。 -
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-originがboundより大きいか等しい場合
-
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-originがboundより大きいか等しい場合
-
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が有限でない場合、またはoriginがbound以上である場合
-
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が有限でない場合、またはoriginがbound以上である場合
-
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未満の場合、またはrandomNumberOriginがrandomNumberBound以上の場合- 導入されたバージョン:
- 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-randomNumberOriginがrandomNumberBound以上の場合- 導入されたバージョン:
- 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未満の場合、またはrandomNumberOriginがrandomNumberBound以上の場合- 導入されたバージョン:
- 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-randomNumberOriginがrandomNumberBound以上の場合- 導入されたバージョン:
- 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数だけ生成するストリームを返します。- 定義:
- インタフェース
RandomGenerator内のdoubles - オーバーライド:
doubles、クラスRandom- パラメータ:
streamSize- 生成する値の数randomNumberOrigin- 各乱数値の起点(含む)randomNumberBound- 各乱数値の境界(含まない)- 戻り値:
- それぞれ起点(含む)と限界(含まない)が指定された、擬似乱数
double値のストリーム - 例外:
IllegalArgumentException-streamSizeがゼロ未満またはrandomNumberOriginが有限でない場合、またはrandomNumberBoundが有限でない場合、またはrandomNumberOriginがrandomNumberBound以上である場合- 導入されたバージョン:
- 1.8
-
doubles
public DoubleStream doubles(double randomNumberOrigin, double randomNumberBound) 指定された起点(含む)と境界(含まない)に準拠した擬似乱数double値を含む、事実上無制限のストリームを返します。- 定義:
- インタフェース
RandomGenerator内のdoubles - オーバーライド:
doubles、クラスRandom- 実装上のノート:
- このメソッドは、
doubles(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound)と同等であるように実装されます。 - パラメータ:
randomNumberOrigin- 各乱数値の起点(含む)randomNumberBound- 各乱数値の境界(含まない)- 戻り値:
- それぞれ起点(含む)と限界(含まない)が指定された、擬似乱数
double値のストリーム - 例外:
IllegalArgumentException-randomNumberOriginが有限でない場合、またはrandomNumberBoundが有限でない場合、またはrandomNumberOriginがrandomNumberBound以上である場合- 導入されたバージョン:
- 1.8
-