ホームページ > Java > &#&チュートリアル > シードを設定しているにもかかわらず、Java 乱数ジェネレーターが常に同じ数値を返すのはなぜですか?

シードを設定しているにもかかわらず、Java 乱数ジェネレーターが常に同じ数値を返すのはなぜですか?

Mary-Kate Olsen
リリース: 2024-11-07 07:11:02
オリジナル
670 人が閲覧しました

Why Does My Java Random Number Generator Always Return the Same Number Despite Setting a Seed?

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 サイトの他の関連記事を参照してください。

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