for (int i = 0; i < 20; i++)
{
byte wtf = (byte) new Random().Next(10);
Console.Write(wtf + " ");
}
如果我逐步运行程序,此代码会生成预期的输出: 4 6 9 2 9 0 ....
但是,如果我只是点击Start Debugging或-Without Debugging就会发生这种情况: 7 7 7 7 7 7 ...
为什么?
答案 0 :(得分:2)
因为你的循环发生得太快了。我相信,Random
类使用系统时钟作为种子,当你的循环在相同的毫秒内运行时,它会获得相同的种子。
以下是您真正需要做的事情:在您的循环
之外实例化Random
:
var rand = new Random();
for (int i = 0; i < 20; i++)
{
byte wtf = (byte) rand.Next(10);
Console.Write(wtf + " ");
}