モジュール java.base
パッケージ java.util.random

インタフェースRandomGenerator.ArbitrarilyJumpableGenerator

すべてのスーパー・インタフェース:
RandomGenerator, RandomGenerator.JumpableGenerator, RandomGenerator.LeapableGenerator, RandomGenerator.StreamableGenerator
含まれているインタフェース:
RandomGenerator

public static interface RandomGenerator.ArbitrarilyJumpableGenerator extends RandomGenerator.LeapableGenerator
このインタフェースは、擬似乱数シーケンスを生成し、任意の量で簡単にjumpを状態サイクルの遠いポイントに送ることができるオブジェクトに共通のプロトコルを提供するように設計されています。

理想的には、1つの元のRandomGenerator.ArbitrarilyJumpableGeneratorオブジェクトからの反復ジャンプによって生成されたすべてのRandomGenerator.ArbitrarilyJumpableGeneratorオブジェクトは、統計的に相互に独立しており、個別に均一です(状態サイクルの重複する部分を走査しない場合)。 実際には、ある程度の近似で独立性と均一性を決める必要があります。 特に、特定の実装では、jump()メソッドによって生成されたストリーム内の各ジェネレータを使用して、指定したジャンプ距離を超える数値が生成されると想定できます。 実装者は、期間が2127以上のアルゴリズムを使用することをお薦めします。

多くのアプリケーションでは、2の2乗または2の少数の乗で飛び越えるのが適していますが、この2の累乗はlong値として表さない場合があります。 BigInteger値がジャンプ距離として使用されないように、かわりにdouble値が使用されます。

単一のジャンプ操作を実行し、内部状態の反復的なコピーとジャンプによってオリジナルから生成されるジェネレータのストリームを生成する方法も用意されています。 マルチスレッド・アプリケーションの一般的な方法は、単一のRandomGenerator.ArbitrarilyJumpableGeneratorオブジェクトを作成し、そのjump()メソッドを1回のみ呼び出してから、結果のストリームのジェネレータを1つずつ各スレッドに分離することです。 ただし、生成された各ジェネレータにはRandomGenerator.ArbitrarilyJumpableGeneratorタイプもあります。注意しながら、さまざまなジャンプ距離を使用して、さまざまな方法で状態サイクル全体を走査できます。

RandomGenerator.ArbitrarilyJumpableGeneratorを実装するオブジェクトは通常、暗号方式ではセキュアではありません。 セキュリティ保護を必要とするアプリケーションで使用するために安全な暗号化の施された擬似乱数ジェネレータを取得するには、代わりにSecureRandomを使用することを検討してください。

  • メソッドの詳細

    • of

      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以下の場合、またはこのジェネレータの期間より大きい場合