固定シードを使用した Java 乱数: 同一の出力が得られる理由
コード内で、次を使用して乱数を生成するメソッドを定義しました。指定されたシード。ただし、同じシードを指定すると、生成される 100 個の数値がすべて同一であることがわかります。
Random コンストラクターで同じシードを使用すると、予測可能な数値シーケンスが生成されるため、この動作は予期されています。シードは、乱数生成器を初期化するシード値です。これは、テストを再実行するときに一貫した結果が得られるため、テストにとって重要な機能です。
擬似乱数生成について
Java の Random のような擬似乱数ジェネレーター (PRNG)真のランダム性に近いシーケンスを生成します。ただし、シーケンスを完全に決定するシードを含む小さな初期値のセットがあります。
コードの修正
さまざまな乱数シーケンスを生成するには、毎回同じシードを使用することは避けてください。代わりに、メソッドの外で Random インスタンスを作成し、引数なしで初期化します。このインスタンスは、nanoTime メソッドを使用して一意のシード値を生成します。
修正されたコードは次のとおりです:
private Random generator = new Random(); double randomGenerator() { return generator.nextDouble() * 0.5; }
この変更により、毎回異なる乱数シーケンスが取得されます。 randomGenerator メソッドを呼び出します。
以上がJava で同じシードを使用すると、同じ乱数が得られるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。