ホームページ  >  記事  >  Java  >  Java で同じシードを使用すると、同じ乱数が得られるのはなぜですか?

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

DDD
DDDオリジナル
2024-11-09 14:53:02603ブラウズ

Why do I get identical random numbers when using the same seed in Java?

固定シードを使用した Java 乱数: 同一の出力が得られる理由

コード内で、次を使用して乱数を生成するメソッドを定義しました。指定されたシード。ただし、同じシードを指定すると、生成される 100 個の数値がすべて同一であることがわかります。

Random コンストラクターで同じシードを使用すると、予測可能な数値シーケンスが生成されるため、この動作は予期されています。シードは、乱数生成器を初期化するシード値です。これは、テストを再実行するときに一貫した結果が得られるため、テストにとって重要な機能です。

擬似乱数生成について

Java の Random のような擬似乱数ジェネレーター (PRNG)真のランダム性に近いシーケンスを生成します。ただし、シーケンスを完全に決定するシードを含む小さな初期値のセットがあります。

コードの修正

さまざまな乱数シーケンスを生成するには、毎回同じシードを使用することは避けてください。代わりに、メソッドの外で Random インスタンスを作成し、引数なしで初期化します。このインスタンスは、nanoTime メソッドを使用して一意のシード値を生成します。

修正されたコードは次のとおりです:

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

この変更により、毎回異なる乱数シーケンスが取得されます。 randomGenerator メソッドを呼び出します。

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

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