モジュール 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を使用することを検討してください。