ホームページ  >  記事  >  Java  >  固定シードを使用する場合に Java で非決定性乱数を生成するにはどうすればよいですか?

固定シードを使用する場合に Java で非決定性乱数を生成するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-11 10:18:03764ブラウズ

How to Generate Non-Deterministic Random Numbers in Java When Using a Fixed Seed?

Java での固定シードによる乱数の生成

シードを使用して乱数を生成する場合、シードがランダム性にどのような影響を与えるかを理解することが重要です。同じシードを Random オブジェクトへの引数として提供すると、生成された数値シーケンスは再現可能で決定的になります。これは、単体テストや特定のシナリオの複製に望ましい機能です。

提供されたコードは、固定シードを使用して Random オブジェクトを作成します。これにより、同じシードで 100 個の数値が生成されるたびに、それらの数値が同一になることが保証されます。これを修正して別のシーケンスを生成するには、次のアプローチを検討してください。

  1. シード引数を削除します。
    現在のナノタイムを使用する Random の引数ゼロのコンストラクターを呼び出します。
  2. ランダム シードの生成:
    真のランダム性が重要な場合は、UUID や安全な乱数ジェネレーター (
  3. Keep Random Instance Outside:
    メソッドの外に単一の Random インスタンスを作成し、それを再利用してすべての乱数を生成します。 。これにより、シードが 1 回だけ設定され、その後のrandomGenerator() の呼び出しでは同じシードが使用されることが保証されます。

たとえば、以下のコードは、最初のアプローチを実装するために提供されたコードを変更します。

private Random generator = new Random();
double randomGenerator() {
    return generator.nextDouble() * 0.5;
}

シード引数を削除することにより、このコードは呼び出しごとに異なる乱数シーケンスを生成します。決定論的なランダム性はテストと一貫性にとって重要であることに注意してください。ユースケースによっては真のランダム性が望ましい場合があるため、要件に最も適したアプローチを選択してください。

以上が固定シードを使用する場合に Java で非決定性乱数を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。