Java でシードを使用すると同じ乱数が取得され続けるのはなぜですか?

Barbara Streisand
リリース: 2024-11-09 13:00:03
オリジナル
731 人が閲覧しました

Why Do I Keep Getting the Same Random Numbers in Java When Using a Seed?

シードを使用した Java 乱数生成: 同一の出力のデバッグ

Java では、Random クラスが擬似乱数を生成する方法を提供します。引数にシードを指定することで、生成される数値の並びを制御することができます。ただし、同じシードが繰り返し使用され、同じ数値シーケンスが生成される場合に問題が発生します。

擬似乱数の生成とシードについて

擬似乱数ジェネレーター (PRNG) は、次のアルゴリズムを生成します。ランダムに見える一連の数値ですが、実際にはシードと呼ばれる小さな初期値のセットによって決定されます。シードを指定すると、PRNG は毎回同じ数値シーケンスを生成します。

さまざまなシーケンスを生成するためのコードの調整

出力が同じになる問題を解決するには、シードがどのように機能するかを理解する必要があります。 PRNG で。 Java では、シード引数を指定して Random クラスを呼び出すと、今後の呼び出しでも同じ状態が保持され、同じ数値シーケンスが生成されます。

さまざまなシーケンスを生成するには、ゼロ引数を呼び出すことをお勧めします。システム nanotime をシードとして使用する Random のコンストラクター。これにより、メソッドが呼び出されるたびに異なるシードが使用されるようになります。

コードの修正

次の修正された Java コードでは、引数なしのコンストラクターを使用して、さまざまな乱数シーケンスを生成します。

private Random generator = new Random();

double randomGenerator() {
    return generator.nextDouble() * 0.5;
}
ログイン後にコピー

このコードは、Random インスタンスをメソッドの外に移動し、システム ナノタイムをシードとして使用することにより、出力が同一になる問題を排除し、異なる乱数シーケンスを生成します。

以上がJava でシードを使用すると同じ乱数が取得され続けるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート