我无法理解为什么C#会这样做。
这是我的代码;
private string RandomString(int length)
{
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
string randomString = "";
for(int i = 0; i < length; i++)
{
randomString += chars.ToCharArray()[new Random().Next(chars.ToCharArray().Length)];
}
return randomString;
}
第一个结果: “wwwwwwwwwwwwwwwwwwww”
第二个结果: “ssssssssssssssssssss”
第三个结果: “mmmmmmmmmmmmmmmmmmmm”
答案 0 :(得分:1)
使用new Random()
生成随机数生成器时,其种子将基于当前时间,因此对于循环的每次迭代,它最终都是相同的,因为执行速度很快。相反,您需要在循环外部使用var rng = new Random()
,并在循环内使用rng.Next
。