2017-05-17 17 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 + " "); 
} 
相關問題