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

インタフェースRandomGenerator.LeapableGenerator

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

public static interface RandomGenerator.LeapableGenerator extends RandomGenerator.JumpableGenerator
このインタフェースは、擬似乱数シーケンスを生成するオブジェクトに共通のプロトコルを提供するように設計されており、その状態サイクルの非常に遠いポイントに簡単に前方にジャンプできるだけでなく、飛躍(たとえば、2128)することもできます。 通常、1つは、単一の元のRandomGenerator.LeapableGeneratorオブジェクトからの繰返しリープによって一連のRandomGenerator.LeapableGeneratorオブジェクトを構築し、その各オブジェクトについて、反復的なジャンプによってオブジェクトのサブ・シリーズを生成します。 リープとジャンプには概念上の違いがほとんどありませんが、通常、リップは状態サイクル (おそらく距離2128など)の非常に長いジャンプになります。

理想的には、1つの元のRandomGenerator.LeapableGeneratorオブジェクトからの反復リープおよびジャンプによって生成されたすべてのRandomGenerator.LeapableGeneratorオブジェクトは、統計的に相互に独立しており、個別に均一です。 実際には、ある程度の近似で独立性と均一性を決める必要があります。 特に、特定の実装では、leapsメソッドによって(ジャンプにより) 生成されたストリームの各ジェネレータが、264以下の多数のオブジェクトの生成に使用されると想定できます。 実装者は、期間が2191以上のアルゴリズムを使用することをお薦めします。

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

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

  • メソッドの詳細

    • of

      name algorithmを利用するRandomGenerator.LeapableGeneratorのインスタンスを返します。
      パラメータ:
      name - 乱数ジェネレータの名前algorithm
      戻り値:
      RandomGenerator.LeapableGeneratorのインスタンス
      例外:
      NullPointerException - nameがnullである場合
      IllegalArgumentException - 指定されたアルゴリズムが見つからない場合
    • copy

      内部状態がこのジェネレータ (したがって、同じ一連の操作の対象となる場合は、将来の動作は同じである必要があります)の正確なコピーである新しいジェネレータを返します。
      定義:
      インタフェースRandomGenerator.JumpableGenerator内のcopy
      戻り値:
      このジェネレータのコピーである新規オブジェクト
    • leap

      void leap()
      この擬似乱数ジェネレータの状態を変更して、その状態サイクル内の大きな固定距離の (通常は296以上)を前方に向けます。
    • leapDistance

      double leapDistance()
      このジェネレータ・オブジェクトの状態サイクル内でleap()メソッドが前方に飛ぶ距離を返します。
      戻り値:
      デフォルトのリープ距離(double値として)
    • leaps

      RandomGenerator.JumpableGeneratorインタフェースを実装する新しい擬似乱数ジェネレータの実質的に無制限のストリームを返します。
      実装要件:
      デフォルトの実装では、このジェネレータでcopy()およびleap()を繰り返し呼び出す順次ストリームが生成され、コピーはストリームによって生成されたジェネレータになります。
      実装上のノート:
      このメソッドは、leaps (Long.MAX_VALUE)と同等の方法で実装できます。
      戻り値:
      RandomGenerator.JumpableGeneratorインタフェースを実装するオブジェクトのストリーム
    • leaps

      default Stream<RandomGenerator.JumpableGenerator> leaps(long streamSize)
      RandomGenerator.JumpableGeneratorインタフェースを実装する新しい擬似乱数ジェネレータの特定のstreamSize数を生成するストリームを返します。
      実装要件:
      デフォルトの実装では、このジェネレータでcopy()およびleap()を繰り返し呼び出す順次ストリームが生成され、コピーはストリームによって生成されたジェネレータになります。
      パラメータ:
      streamSize - 生成するジェネレータの数
      戻り値:
      RandomGenerator.JumpableGeneratorインタフェースを実装するオブジェクトのストリーム
      例外:
      IllegalArgumentException - streamSizeが0未満の場合
    • copyAndLeap

      default RandomGenerator.JumpableGenerator copyAndLeap()
      このジェネレータをコピーし、このジェネレータを前方に傾け、コピーを返します。
      実装要件:
      デフォルトの実装では、これをコピーし、リープしてからコピーを返します。
      戻り値:
      うるう発生前のこのジェネレータ・オブジェクトのコピー