Java 乱数ジェネレーターはシードにもかかわらず常に同じ数値を返す
提供された Java コードでは、シードを設定しているにもかかわらず、乱数ジェネレーターは一貫して同じ数値が得られます。この問題は、メソッド呼び出しごとに新しい Random オブジェクトを作成するときに発生します。これにより、毎回新しいシードが生成され、乱数が繰り返されることになります。
これを解決するには、クラス全体で単一の Random インスタンスを共有することが不可欠です。この変更を組み込むことで、シードが 1 回だけ設定されることが保証され、一連の真の乱数が生成されます。
public class Numbers { // Shared Random instance private Random randnum = new Random(); public int random(int i) { randnum.setSeed(123456789); return randnum.nextInt(i); } }
この変更により、random メソッドへの後続の呼び出しでは、次の条件に従って異なる数値が返されます。固定シードを持つことの制約。
以上がシードを設定しているにもかかわらず、Java 乱数ジェネレーターが常に同じ数値を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。