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

インタフェースRandomGenerator.JumpableGenerator

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

public static interface RandomGenerator.JumpableGenerator extends RandomGenerator.StreamableGenerator
このインタフェースは、擬似乱数値を生成するオブジェクトに共通のプロトコルを提供するように設計されており、状態サイクル内の離れた場所に適度な量(たとえば264)で簡単に前方にジャンプできます。

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

単一のジャンプ操作を実行し、内部状態の反復的なコピーとジャンプによってオリジナルから生成されるジェネレータのストリームを生成する方法も用意されています。 マルチスレッド・アプリケーションの一般的な方法は、単一のRandomGenerator.JumpableGeneratorオブジェクトを作成し、そのjump()メソッドを1回だけ呼び出してから、結果のストリームから1つずつ、各スレッドに1つずつジェネレータをパーティション化することです。 通常、jump()メソッドによって生成されたジェネレータでjump()をコールすることはお薦めしません。結果は、jump()メソッドへのコールによってすでに生成された別のジェネレータと同じジェネレータの場合があるためです。 このため、ストリーム内の実際のジェネレータ・オブジェクトもRandomGenerator.JumpableGeneratorインタフェースを実装する可能性が高い場合でも、jumps()メソッドの戻り型はStream<RandomGenerator.JumpableGenerator>ではなくStream<RandomGenerator>です。

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

  • メソッドの詳細

    • of

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

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

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

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

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

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

      default Stream<RandomGenerator> rngs()
      RandomGeneratorインタフェースを実装する新しい擬似乱数ジェネレータの実質的に無制限のストリームを返します。 理想的には、ストリームのジェネレータは統計的に独立しているように見えます。
      定義:
      インタフェースRandomGenerator.StreamableGenerator内のrngs
      実装要件:
      デフォルトの実装では、jumps()がコールされます。
      戻り値:
      RandomGeneratorインタフェースを実装するオブジェクトのストリーム
    • rngs

      default Stream<RandomGenerator> rngs(long streamSize)
      RandomGeneratorインタフェースを実装する新しい擬似乱数ジェネレータの特定のstreamSize数を生成するストリームを返します。 理想的には、ストリームのジェネレータは統計的に独立しているように見えます。
      定義:
      インタフェースRandomGenerator.StreamableGenerator内のrngs
      実装要件:
      デフォルトの実装では、jumps(streamSize)をコールします。
      パラメータ:
      streamSize - 生成するジェネレータの数
      戻り値:
      RandomGeneratorインタフェースを実装するオブジェクトのストリーム
      例外:
      IllegalArgumentException - streamSizeが0未満の場合
    • copyAndJump

      default RandomGenerator copyAndJump()
      このジェネレータをコピーし、このジェネレータを前方にジャンプしてから、コピーを返します。
      実装要件:
      デフォルトの実装では、これをコピーしてジャンプし、コピーを返します。
      戻り値:
      ジャンプが発生した前のこのジェネレータ・オブジェクトのコピー