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