0 から 100 までの 10 個のランダムな数字を出力する簡単なコードを用意しました。F5 を使用して Visual Studio (C#) でこれを実行すると、同じ数字が 10 回得られます。ただし、F10またはF11を使用して行ごとにデバッグモードで実行すると、10個の異なる数値が得られます(すべて異なるわけではありませんが、ランダム化されています)。
public static void rand() {
for (int j = 0; j < 10; j++) {
Random r = new Random();
Console.WriteLine( r.Next(100));
}
}
ループの外で Random r をインスタンス化し、参照によってコピーすることで問題を解決する方法は知っていますが、なぜこれが起こっているのかを理解したいと思います。これはシードと関係があると思いますが、デバッグモードで実行している間、プログラムは動作し、混乱します。
また、デバッグ モードで正しい結果が得られるかどうかを常にテストする必要があるかどうかも疑問です。