非常非常之奇怪的问题,咋就这么不顺呢!!!!
public static string StringGenerateRandom(int length)
{
System.Text.StringBuilder MyStringBuilder = new System.Text.StringBuilder();
char[] chars = "0123456789 ".ToCharArray();
int index;
Random rnd = new Random();
for (int i = 0; i < length; i++)
{
index = rnd.Next(chars.Length);
MyStringBuilder.Append(chars[index].ToString());
}
return MyStringBuilder.ToString();
}
private void Button1_Click(object sender, System.EventArgs e)
{
string temp= " ";
for (int i=0;i <1000;i++)
{
temp=i.ToString()+ ": "+StringGenerateRandom(4)+ " <br> ";
Response.Write(temp);
}
}
private void Button2_Click(object sender, System.EventArgs e)
{
this.TextBox1.Text=StringGenerateRandom(4);
}
生成4位随机数,Button1是生成一千次,Button2是一次一次生成。
结果是一次一次生成每次都不一样,这是正常的,而生成1000次的几乎都是重复的,调用的方法是一样的啊!
如果我在
temp=i.ToString()+ ": "+StringGenerateRandom(4)+ " <br> ";
设置一个断点,可以看到生成的值不一样,可不设置断点几乎生成一样的值,
为什么会这样呢????
------解决方案--------------------把种子放到外间
Random rnd = new Random();
==》
放到函数外面
private static Random rnd = new Random();
原因嘛,是因为循环运行的太快了,所以每次随机种子的时间数都一样