在下面的代码中,我在for循环里想输出100个随机的8位字符串,但是显示的结果总是100个重复的值,很疑惑!
贴出来大家讨论一下,如果大家有遇到过这样的问题的,可以解答一下,谢谢了!
protected void Page_Load(object sender, EventArgs e)
{
string tempsss = string.Empty;
for (int i = 0; i < 100; i++)
{
tempsss += GenerateRandom(8)+"<br>";
}
Response.Write(tempsss);
}
private static char[] constant =
{
'0','1','2','3','4','5','6','7','8','9',
'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
'@','#','$','%','&','*'
};
public static string GenerateRandom(int length)
{
System.Text.StringBuilder newRandom = new System.Text.StringBuilder(68);
Random rd = new Random();
for (int i = 0; i < length; i++)
{
newRandom.Append(constant[rd.Next(68)]);
}
return newRandom.ToString();
}
贴出来大家讨论一下,如果大家有遇到过这样的问题的,可以解答一下,谢谢了!
protected void Page_Load(object sender, EventArgs e)
{
string tempsss = string.Empty;
for (int i = 0; i < 100; i++)
{
tempsss += GenerateRandom(8)+"<br>";
}
Response.Write(tempsss);
}
private static char[] constant =
{
'0','1','2','3','4','5','6','7','8','9',
'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
'@','#','$','%','&','*'
};
public static string GenerateRandom(int length)
{
System.Text.StringBuilder newRandom = new System.Text.StringBuilder(68);
Random rd = new Random();
for (int i = 0; i < length; i++)
{
newRandom.Append(constant[rd.Next(68)]);
}
return newRandom.ToString();
}
{
string tempsss = string.Empty;
Random rd = new Random();
for (int i = 0; i < 100; i++)
{
StringBuilder newRandom = new StringBuilder();
for (int j = 0; j < 8; j++)
{
newRandom.Append(constant[rd.Next(68)]);
}
tempsss = newRandom.ToString() + "<br>" + tempsss;
}
Response.Write(tempsss);
}
private char[] constant =
{
'0','1','2','3','4','5','6','7','8','9',
'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
'@','#','$','%','&','*'
};
// public string GenerateRandom(int length)
// {
// System.Text.StringBuilder newRandom = new System.Text.StringBuilder(68);
// Random rd = new Random();
// for (int i = 0; i < length; i++)
// {
// newRandom.Append(constant[rd.Next(68)]);
// }
// return newRandom.ToString();
// }
for (int i = 0; i < length; i++)
{
newRandom.Append(constant[rd.Next(68)]);
}
这里的问题.
Random 实例化的速度太快了 .. 你每次调用的时候生成的都是差不多. 你试试下面的代码就知道了.
//用这生成的大部分一样
for(int i=0 ; i<10;i++)
{
Console.WriteLine(new Random().Next(68).ToString());
}
Console.WriteLine("------------------------");
//这个生成的基本都是不一样的
Random r = new Random();
for(int i=0 ; i<10;i++)
{
Console.WriteLine(r.Next(68).ToString());
}