读书人

非常非常之奇怪的有关问题咋就这么不

发布时间: 2012-03-08 13:30:13 作者: rapoo

非常非常之奇怪的问题,咋就这么不顺呢!!!!
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();

原因嘛,是因为循环运行的太快了,所以每次随机种子的时间数都一样

读书人网 >asp.net

热点推荐