2017-05-17 6 views
0
for (int i = 0; i < 20; i++) 
{ 
    byte wtf = (byte) new Random().Next(10); 
    Console.Write(wtf + " "); 
} 

「/オーバーにステップ」デバッグ開始かに応じて異なる働き: 4 6 9 2 9 0 ....ランダム私はステップでプログラムステップを実行する場合、このコードは、予想される出力を生成

しかし、私がちょうどデバッグを開始するか、デバッグを行わない場合は、次のようになります。 7 7 7 7 7 7 ...

なぜですか?

答えて

2

ループが速すぎるためです。 Randomクラスはシードにシステムクロックを使用していると私は信じています。同じミリ秒でループが実行されると、同じシードが得られます。

ここにあなたが本当に何をする必要があるかです:あなたのループの外Randomをインスタンス化:

var rand = new Random(); 

for (int i = 0; i < 20; i++) 
{ 
    byte wtf = (byte) rand.Next(10); 
    Console.Write(wtf + " "); 
} 
関連する問題