クラスThreadLocalRandom
- すべての実装されたインタフェース:
Serializable, RandomGenerator
Mathクラスによって使用されるグローバルなRandomジェネレータと同様に、ThreadLocalRandomは、それ以外では変更できない内部的に生成されたシードで初期化されます。 該当する場合、並行プログラム内の共有されたRandomオブジェクトではなくThreadLocalRandomを使用すれば、通常、発生するオーバーヘッドや競合がはるかに少なくなります。 ThreadLocalRandomの使用は、複数のタスク(たとえば、各ForkJoinTask)がスレッド・プール内で並列に乱数を使用している場合に特に適しています。
このクラスの使用法は通常、ThreadLocalRandom.current().nextX(...) (ここで、XはIntやLongなど)の形式にするようにしてください。 すべての使用方法がこの形式である場合、誤って複数のスレッドでThreadLocalRandomを共有することはできません。
このクラスはまた、追加の一般的に使用される制約付きランダム生成メソッドも提供します。
ThreadLocalRandomのインスタンスにはセキュアな暗号化が施されていません。 セキュリティに依存するアプリケーションでは、かわりにSecureRandomの使用を検討してください。 また、システム・プロパティjava.util.secureRandomSeedをtrueに設定しないかぎり、デフォルトで構築されるインスタンスは暗号化処理に乱数シードを使用しません。
- 導入されたバージョン:
- 1.7
- 関連項目:
-
ネストされたクラスのサマリー
インタフェースで宣言されたネストされたクラス/インタフェース RandomGenerator
RandomGenerator.ArbitrarilyJumpableGenerator, RandomGenerator.JumpableGenerator, RandomGenerator.LeapableGenerator, RandomGenerator.SplittableGenerator, RandomGenerator.StreamableGenerator修飾子と型インタフェース説明static interfaceこのインタフェースは、擬似乱数シーケンスを生成し、任意の量で簡単にjumpを状態サイクルの遠いポイントに送ることができるオブジェクトに共通のプロトコルを提供するように設計されています。static interfaceこのインタフェースは、擬似乱数値を生成するオブジェクトに共通のプロトコルを提供するように設計されており、状態サイクル内の離れた場所に適度な量(たとえば264)で簡単に前方にジャンプできます。static interfaceこのインタフェースは、擬似乱数シーケンスを生成するオブジェクトに共通のプロトコルを提供するように設計されており、その状態サイクルの非常に遠いポイントに簡単に前方にジャンプできるだけでなく、飛躍(たとえば、2128)することもできます。static interfaceこのインタフェースは、擬似乱数値の順序を生成するオブジェクトに共通プロトコルを提供するように設計されており、それぞれ(元のものと新しいもの)という2つのオブジェクトに「分割」で、同じプロトコル(したがって、無期限に再帰的に分割できます)に従うことができます。static interfaceRandomGenerator.StreamableGeneratorインタフェースは、RandomGeneratorインタフェースを補強して、RandomGeneratorオブジェクトのストリームを返すメソッドを提供します。 -
メソッドのサマリー
修飾子と型メソッド説明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) ゼロ(包含)と指定した境界(除外)の間の擬似乱数的に選択したdouble値を返します。doublenextDouble(double origin, double bound) 指定された起点(包含)と指定された境界(除外)の間の擬似乱数的に選択したdouble値を返します。floatnextFloat(float bound) ゼロ(包含)と指定したバインド(除外)の間の擬似乱数的に選択したfloat値を返します。floatnextFloat(float origin, float bound) 指定された起点(包含)と指定された境界(除外)の間の擬似乱数的に選択したfloat値を返します。double平均が0で、標準偏差が1であるガウス(正規)分布から擬似乱数的に選択されたdouble値を返します。intnextInt(int bound) この乱数ジェネレータのシーケンスを使って、0から指定された値の範囲(0は含むが、その指定された値は含まない)で一様分布のint型の擬似乱数値を返します。intnextInt(int origin, int bound) 指定された起点(包含)と指定された境界(除外)の間の擬似乱数的に選択したint値を返します。longnextLong(long bound) ゼロ(包含)と指定した境界(除外)の間の擬似乱数的に選択したlong値を返します。longnextLong(long origin, long bound) 指定された起点(包含)と指定された境界(除外)の間の擬似乱数的に選択したlong値を返します。voidsetSeed(long seed) UnsupportedOperationExceptionをスローします。クラス Randomで宣言されたメソッド
from, nextBoolean, nextBytes, nextDouble, nextFloat, nextInt, nextLong修飾子と型メソッド説明static Randomfrom(RandomGenerator generator) メソッド・コールをRandomGenerator引数に委任するRandomのインスタンスを返します。booleanこの乱数ジェネレータのシーケンスを使って、一様分布のboolean型の次の擬似乱数値を返します。voidnextBytes(byte[] bytes) ランダム・バイトを生成し、ユーザー指定のバイト配列に配置します。doubleこの乱数ジェネレータのシーケンスを使って、0.0から1.0の範囲で一様分布のdouble型の次の擬似乱数値を返します。floatこの乱数ジェネレータのシーケンスを使って、0.0から1.0の範囲で一様分布のfloat型の次の擬似乱数値を返します。intnextInt()この乱数ジェネレータのシーケンスを使って、一様分布のint型の次の擬似乱数値を返します。longnextLong()この乱数ジェネレータのシーケンスを使って、一様分布のlong型の次の擬似乱数値を返します。クラスオブジェクトで宣言されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait修飾子と型メソッド説明protected Objectclone()このオブジェクトのコピーを作成して、返します。booleanこのオブジェクトと他のオブジェクトが等しいかどうかを示します。protected voidfinalize()削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。最終決定は非推奨であり、将来のリリースで削除される可能性があります。final Class<?> getClass()このObjectの実行時クラスを返します。inthashCode()このオブジェクトに対するハッシュ・コード値を返します。final voidnotify()このオブジェクトのモニターで待機中のスレッドを1つ再開します。final voidこのオブジェクトのモニターで待機中のすべてのスレッドを再開します。toString()オブジェクトの文字列表現を返します。final voidwait()現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。final voidwait(long timeoutMillis) 現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。final voidwait(long timeoutMillis, int nanos) 現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。インタフェースで宣言されたメソッド RandomGenerator
equiDoubles, isDeprecated, nextExponential, nextGaussian修飾子と型メソッド説明default DoubleStreamequiDoubles(double left, double right, boolean isLeftIncluded, boolean isRightIncluded) 疑似ランダムに選択されたdouble値の事実上無制限のストリームを返します。各値は、指定されたleft境界と指定されたright境界の間にあります。default booleanRandomGenerator (algorithm)の実装が非推奨としてマークされている場合はtrueを返します。default double平均が1である指数分布から擬似乱数的に選択された、負でないdouble値を返します。default doublenextGaussian(double mean, double stddev) ガウス(正規)分布から擬似乱数的に選択されたdouble値を、引数で指定された平均偏差および標準偏差で返します。
-
メソッドの詳細
-
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) 指定された起点(包含)と指定された境界(除外)の間の擬似乱数的に選択したint値を返します。- パラメータ:
origin- 戻り値bound- 返される値の上限(除外)- 戻り値:
- 起点(包含)と境界(除外)の間の擬似乱数的に選択した
int値 - スロー:
IllegalArgumentException-originがboundより大きいか等しい場合
-
nextLong
public long nextLong(long bound) ゼロ(包含)と指定した境界(除外)の間の擬似乱数的に選択したlong値を返します。- パラメータ:
bound- 返される値の上限(除外)。 正の値でなければならない- 戻り値:
- 0 (包含)と境界(除外)の間の擬似乱数的に選択した
long値 - スロー:
IllegalArgumentException-boundが正でない場合
-
nextLong
public long nextLong(long origin, long bound) 指定された起点(包含)と指定された境界(除外)の間の擬似乱数的に選択したlong値を返します。- パラメータ:
origin- 戻り値bound- 返される値の上限(除外)- 戻り値:
- 起点(包含)と境界(除外)の間の擬似乱数的に選択した
long値 - スロー:
IllegalArgumentException-originがboundより大きいか等しい場合
-
nextGaussian
public double nextGaussian()平均が0で、標準偏差が1であるガウス(正規)分布から擬似乱数的に選択されたdouble値を返します。- 定義:
- インタフェース
RandomGenerator内のnextGaussian - オーバーライド:
nextGaussian、クラスRandom- 実装上のノート:
- この実装は、
RandomGenerator.nextGaussian()のデフォルトの実装を呼び出すため、スーパークラスに記述されている極メソッドではなく、McFarlandの高速変更済ジグラット・アルゴリズムを使用します。 - 戻り値:
- ガウス分布から擬似乱数的に選択された
double値
-
nextFloat
public float nextFloat(float bound) ゼロ(包含)と指定したバインド(除外)の間の擬似乱数的に選択したfloat値を返します。- パラメータ:
bound- 返される値の上限(除外)。 正および有限である必要があります- 戻り値:
- 0 (包含)とバインドされた(除外)の間の擬似乱数的に選択した
float値 - スロー:
IllegalArgumentException-boundが正と有限の両方でない場合- 導入されたバージョン:
- 17
-
nextFloat
public float nextFloat(float origin, float bound) 指定された起点(包含)と指定された境界(除外)の間の擬似乱数的に選択したfloat値を返します。- パラメータ:
origin- 戻り値bound- 上限(含まない)- 戻り値:
- 起点(包含)と境界(除外)の間の擬似乱数的に選択した
float値 - スロー:
IllegalArgumentException-originが有限でない場合、またはboundが有限でない場合、またはoriginがbound以上である場合- 導入されたバージョン:
- 17
-
nextDouble
public double nextDouble(double bound) ゼロ(包含)と指定した境界(除外)の間の擬似乱数的に選択したdouble値を返します。- パラメータ:
bound- 返される値の上限(除外)。 正および有限である必要があります- 戻り値:
- 0 (包含)と境界(除外)の間の擬似乱数的に選択した
double値 - スロー:
IllegalArgumentException-boundが正と有限の両方でない場合
-
nextDouble
public double nextDouble(double origin, double bound) 指定された起点(包含)と指定された境界(除外)の間の擬似乱数的に選択したdouble値を返します。- パラメータ:
origin- 戻り値bound- 返される値の上限(除外)- 戻り値:
- 起点(包含)と境界(除外)の間の擬似乱数的に選択した
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
-