C#无法生成随机字符串
我不明白C#为什么要这样做 这是我的密码C#无法生成随机字符串,c#,.net,string,random,C#,.net,String,Random,我不明白C#为什么要这样做 这是我的密码 private string RandomString(int length) { const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; string randomString = ""; for(int i = 0; i < length; i++) { randomString +
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;
}
私有字符串RandomString(int-length)
{
常量字符串chars=“abcdefghijklmnopqrstuvwxyz012456789”;
字符串随机字符串=”;
for(int i=0;i
第一个结果:
“WWWWWWWWWWWWWWWW”
第二个结果:
“SSSSSSSSSSSSSSSS”
第三个结果:
“mmmmmmmmmm”当您使用
new random()
生成一个随机数生成器时,它的种子将基于当前时间,因此循环每次迭代的结果都是相同的,因为执行速度很快。相反,您希望在循环外部使用var rng=new Random()
,并在循环内部使用rng.Next
。停止在每次循环迭代中生成新的随机实例。在循环外声明并初始化它一次。(循环进行得太快,你总是得到相同的种子。)制作一个Random
对象,因为所有随机对象都有相同的种子(时间)。这很有效,谢谢。我认为它只会创建一个新的Random实例并生成新的integer。奇怪……它确实生成了一个新的Random
实例,但它们都有相同的种子,因此生成了相同的数字。