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...为什么?
因为你的循环发生得太快了。 我相信,Random
类使用系统时钟作为种子,当您的循环在同一毫秒内运行时,它会获得相同的种子。
以下是您真正需要做的:在循环之外实例化Random
:
var rand = new Random();
for (int i = 0; i < 20; i++)
{
byte wtf = (byte) rand.Next(10);
Console.Write(wtf + " ");
}