- すべての実装されたインタフェース:
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 ThreadLocalRandom
current()
現在のスレッド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 int
next
(int bits) 指定された下位ビット数の疑似乱数を生成します。double
nextDouble
(double bound) ゼロ(inclusive)と指定した境界(exclusive)の間の擬似乱数的に選択したdouble
値を返します。double
nextDouble
(double origin, double bound) 指定された起点(inclusive)と指定された境界(exclusive)の間の擬似乱数的に選択したdouble
値を返します。float
nextFloat
(float bound) ゼロ(inclusive)と指定したバインド(exclusive)の間の擬似乱数的に選択したfloat
値を返します。float
nextFloat
(float origin, float bound) 指定された起点(inclusive)と指定された境界(exclusive)の間の擬似乱数的に選択したfloat
値を返します。int
nextInt
(int bound) この乱数ジェネレータのシーケンスを使って、0から指定された値の範囲(0は含むが、その指定された値は含まない)で一様分布のint
型の擬似乱数値を返します。int
nextInt
(int origin, int bound) 指定された起点(inclusive)と指定された境界(exclusive)の間の擬似乱数的に選択したint
値を返します。long
nextLong
(long bound) ゼロ(inclusive)と指定した境界(exclusive)の間の擬似乱数的に選択したlong
値を返します。long
nextLong
(long origin, long bound) 指定された起点(inclusive)と指定された境界(exclusive)の間の擬似乱数的に選択したlong
値を返します。void
setSeed
(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で宣言されたメソッド
equiDoubles, isDeprecated, nextExponential, nextGaussian
-
メソッドの詳細
-
current
public static ThreadLocalRandom current()現在のスレッドThreadLocalRandom
オブジェクトを返します。 このオブジェクトのメソッドは、他のスレッドではなく現在のスレッドによってのみコールする必要があります。- 戻り値:
- 現在のスレッドの
ThreadLocalRandom
-
setSeed
public void setSeed(long seed) UnsupportedOperationException
をスローします。 このジェネレータでのシードの設定はサポートされていません。- オーバーライド:
setSeed
、クラスRandom
- パラメータ:
seed
- シード値- 例外:
UnsupportedOperationException
- 常時
-
next
-
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
-