【发布时间】:2017-05-26 21:58:52
【问题描述】:
我不知道为什么 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;
}
第一个结果: "wwwwwwwwwwwwwwwwwwwww"
第二个结果: "ssssssssssssssssss"
第三个结果: "mmmmmmmmmmmmmmmmmmmm"
【问题讨论】:
-
停止每次循环迭代生成一个新的 Random 实例。在循环外声明并初始化它。 (循环太快了,你总是得到相同的种子。)
-
制作一个
Random对象,因为所有随机对象都具有相同的种子(时间)。