「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Java で同じシードを使用すると、同じ乱数が得られるのはなぜですか?

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

2024 年 11 月 9 日に公開
ブラウズ:390

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 メソッドを呼び出すたびに、異なる一連の乱数が取得されるようになります。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3