- すべてのスーパー・インタフェース:
RandomGenerator
,RandomGenerator.JumpableGenerator
,RandomGenerator.LeapableGenerator
,RandomGenerator.StreamableGenerator
- 含まれているインタフェース:
RandomGenerator
理想的には、1つの元のRandomGenerator.ArbitrarilyJumpableGenerator
オブジェクトからの反復ジャンプによって生成されたすべてのRandomGenerator.ArbitrarilyJumpableGenerator
オブジェクトは、統計的に相互に独立しており、個別に均一です(状態サイクルの重複する部分を走査しない場合)。 実際には、ある程度の近似で独立性と均一性を決める必要があります。 特に、特定の実装では、jump
()メソッドによって生成されたストリーム内の各ジェネレータを使用して、指定したジャンプ距離を超える数値が生成されると想定できます。 実装者は、期間が2127以上のアルゴリズムを使用することをお薦めします。
多くのアプリケーションでは、2の2乗または2の少数の乗で飛び越えるのが適していますが、この2の累乗はlong
値として表さない場合があります。 BigInteger
値がジャンプ距離として使用されないように、かわりにdouble
値が使用されます。
単一のジャンプ操作を実行し、内部状態の反復的なコピーとジャンプによってオリジナルから生成されるジェネレータのストリームを生成する方法も用意されています。 マルチスレッド・アプリケーションの一般的な方法は、単一のRandomGenerator.ArbitrarilyJumpableGenerator
オブジェクトを作成し、そのjump
()メソッドを1回のみ呼び出してから、結果のストリームのジェネレータを1つずつ各スレッドに分離することです。 ただし、生成された各ジェネレータにはRandomGenerator.ArbitrarilyJumpableGenerator
タイプもあります。注意しながら、さまざまなジャンプ距離を使用して、さまざまな方法で状態サイクル全体を走査できます。
RandomGenerator.ArbitrarilyJumpableGenerator
を実装するオブジェクトは通常、暗号方式ではセキュアではありません。 セキュリティ保護を必要とするアプリケーションで使用するために安全な暗号化の施された擬似乱数ジェネレータを取得するには、代わりにSecureRandom
を使用することを検討してください。
-
ネストされたクラスのサマリー
インタフェースjava.util.random.RandomGeneratorで宣言されたネストされたクラス/インタフェース
RandomGenerator.ArbitrarilyJumpableGenerator, RandomGenerator.JumpableGenerator, RandomGenerator.LeapableGenerator, RandomGenerator.SplittableGenerator, RandomGenerator.StreamableGenerator
-
メソッドのサマリー
修飾子と型メソッド説明copy()
内部状態がこのジェネレータ (したがって、同じ一連の操作の対象となる場合は、将来の動作は同じである必要があります)の正確なコピーである新しいジェネレータを返します。copyAndJump
(double distance) このジェネレータをコピーし、このジェネレータを前方にジャンプしてから、コピーを返します。default void
jump()
この擬似乱数ジェネレータの状態を変更して、その状態サイクル内の大きな固定距離(通常は264以上)を前方にジャンプします。void
jump
(double distance) この擬似乱数ジェネレータの状態を変更して、その状態サイクル内の指定された距離を前方にジャンプします。void
jumpPowerOfTwo
(int logDistance) この擬似乱数ジェネレータの状態を変更して、状態サイクル内の2logDistance
と同じ距離を前方にジャンプします。jumps
(double distance) 新しい擬似乱数ジェネレータの実質的に無制限のストリームを返します。それぞれは、RandomGenerator.ArbitrarilyJumpableGenerator
インタフェースを実装しており、指定されたジャンプ距離の異なる整数倍数でこのジェネレータのコピーをジャンプすることで生成されます。jumps
(long streamSize, double distance) 指定されたstreamSize
数の新しい擬似乱数ジェネレータを生成するストリームを返します。それぞれがRandomGenerator.ArbitrarilyJumpableGenerator
インタフェースを実装しており、指定されたジャンプ距離の異なる整数倍数でこのジェネレータのコピーをジャンプすることで生成されます。default void
leap()
この擬似乱数ジェネレータの状態を変更して、状態サイクル内の非常に大きな固定距離の(通常は2128以上)を飛び越えます。name
algorithmを利用するRandomGenerator.ArbitrarilyJumpableGenerator
のインスタンスを返します。インタフェースjava.util.random.RandomGeneratorで宣言されたメソッド
doubles, doubles, doubles, doubles, equiDoubles, ints, ints, ints, ints, isDeprecated, longs, longs, longs, longs, nextBoolean, nextBytes, nextDouble, nextDouble, nextDouble, nextExponential, nextFloat, nextFloat, nextFloat, nextGaussian, nextGaussian, nextInt, nextInt, nextInt, nextLong, nextLong, nextLong
インタフェースjava.util.random.RandomGenerator.JumpableGeneratorで宣言されたメソッド
copyAndJump, jumpDistance, jumps, jumps, rngs, rngs
インタフェースjava.util.random.RandomGenerator.LeapableGeneratorで宣言されたメソッド
copyAndLeap, leapDistance, leaps, leaps
-
メソッドの詳細
-
of
static RandomGenerator.ArbitrarilyJumpableGenerator of(String name) name
algorithmを利用するRandomGenerator.ArbitrarilyJumpableGenerator
のインスタンスを返します。- パラメータ:
name
- 乱数ジェネレータの名前algorithm- 戻り値:
RandomGenerator.ArbitrarilyJumpableGenerator
のインスタンス- 例外:
NullPointerException
- nameがnullである場合IllegalArgumentException
- 指定されたアルゴリズムが見つからない場合
-
copy
内部状態がこのジェネレータ (したがって、同じ一連の操作の対象となる場合は、将来の動作は同じである必要があります)の正確なコピーである新しいジェネレータを返します。- 定義:
- インタフェース
RandomGenerator.JumpableGenerator
内のcopy
- 定義:
- インタフェース
RandomGenerator.LeapableGenerator
内のcopy
- 戻り値:
- このジェネレータのコピーである新規オブジェクト
-
jumpPowerOfTwo
void jumpPowerOfTwo(int logDistance) この擬似乱数ジェネレータの状態を変更して、状態サイクル内の2logDistance
と同じ距離を前方にジャンプします。- パラメータ:
logDistance
- 状態サイクル内でジャンプする距離のbase-2対数- 例外:
IllegalArgumentException
-logDistance
が2logDistance
がこのジェネレータの期間より大きい場合
-
jump
void jump(double distance) この擬似乱数ジェネレータの状態を変更して、その状態サイクル内の指定された距離を前方にジャンプします。- パラメータ:
distance
- 状態サイクル内でジャンプする距離- 例外:
IllegalArgumentException
-distance
が0.0以下の場合、またはこのジェネレータの期間より大きい場合
-
jump
default void jump()この擬似乱数ジェネレータの状態を変更して、その状態サイクル内の大きな固定距離(通常は264以上)を前方にジャンプします。 使用距離は、メソッドjumpDistance
()によって返される距離です。- 定義:
- インタフェース
RandomGenerator.JumpableGenerator
内のjump
- 実装要件:
- デフォルトの実装では、jump(jumpDistance()が起動します。
-
jumps
default Stream<RandomGenerator.ArbitrarilyJumpableGenerator> jumps(double distance) 新しい擬似乱数ジェネレータの実質的に無制限のストリームを返します。それぞれは、RandomGenerator.ArbitrarilyJumpableGenerator
インタフェースを実装しており、指定されたジャンプ距離の異なる整数倍数でこのジェネレータのコピーをジャンプすることで生成されます。- 実装要件:
- デフォルトの実装は、
jumps
(Long.MAX_VALUE
)と同等です。 - パラメータ:
distance
- 状態サイクル内でジャンプする距離- 戻り値:
RandomGenerator
インタフェースを実装するオブジェクトのストリーム- 例外:
IllegalArgumentException
-distance
が0.0以下の場合、またはこのジェネレータの期間より大きい場合
-
jumps
default Stream<RandomGenerator.ArbitrarilyJumpableGenerator> jumps(long streamSize, double distance) 指定されたstreamSize
数の新しい擬似乱数ジェネレータを生成するストリームを返します。それぞれがRandomGenerator.ArbitrarilyJumpableGenerator
インタフェースを実装しており、指定されたジャンプ距離の異なる整数倍数でこのジェネレータのコピーをジャンプすることで生成されます。- 実装要件:
- デフォルトの実装は、jumps(distance).limit(streamSize)と同等です。
- パラメータ:
streamSize
- 生成するジェネレータの数distance
- 状態サイクル内でジャンプする距離- 戻り値:
RandomGenerator
インタフェースを実装するオブジェクトのストリーム- 例外:
IllegalArgumentException
-streamSize
が0未満の場合、またはdistance
が0.0以下の場合、またはこのジェネレータの期間より大きい場合
-
leap
default void leap()この擬似乱数ジェネレータの状態を変更して、状態サイクル内の非常に大きな固定距離の(通常は2128以上)を飛び越えます。 使用距離は、メソッドleapDistance
()によって返される距離です。- 定義:
- インタフェース
RandomGenerator.LeapableGenerator
内のleap
-
copyAndJump
default RandomGenerator.ArbitrarilyJumpableGenerator copyAndJump(double distance) このジェネレータをコピーし、このジェネレータを前方にジャンプしてから、コピーを返します。- 実装要件:
- デフォルトの実装では、これをjumps(distance)にコピーしてから、コピーを返します。
- パラメータ:
distance
- 状態サイクル内でジャンプする距離- 戻り値:
- ジャンプが発生した前のこのジェネレータ・オブジェクトのコピー
- 例外:
IllegalArgumentException
-distance
が0.0以下の場合、またはこのジェネレータの期間より大きい場合
-