有关诡异的随机数问题
时间:2011-03-18 来源:随风浪迹天涯
昨天,在写一个有关验证码框的程序,我想的是用把26个字母用一个字符串装起来,然后用随机数,随机从1 到26取出一个数来,然后再在到字符串中取出这个字符,连续取四次。
代码如下:
string strCode = "ABCDEFHIGKLMNOPQRSTUYCYZ"; System.Text.StringBuilder sb = new System.Text.StringBuilder(); for (int i = 0; i < 4; i++) { Random rom = new Random(); int strNum = rom.Next(1, strCode.Length); char strArray = strCode[strNum]; sb.Append(strArray); } Response.Write(sb);
我原本想这个代码其实很简单,可是很纠结的是,后来一查看,发现每次点击的时候都是获取四个一样的值。本能上的反应说,就是看看程序本身有没有错,设置断点进行调试。
可是,很遗憾的是,调试没错,可以很正确很乖的输出正确的4位的随机数,可是每次运行的时候,它的诡异就出来了,就会出来四个一样的字母,而且每次都一样。
我看了很久,然后突然想到我的一位认识我的同学说,定义随机数不能再循环里面,而要放在外面。然后,我就照着这个想法实现了一下,如下:
string strCode = "ABCDEFHIGKLMNOPQRSTUYCYZ";
System.Text.StringBuilder sb = new System.Text.StringBuilder(); Random rom = new Random();
for (int i = 0; i < 4; i++)
{
int strNum = rom.Next(1, strCode.Length);
char strArray = strCode[strNum];
sb.Append(strArray);
}
Response.Write(sb);
这样就没没有错误了!
其实,到现在,我还不能确切这个问题哪里出错了。如果有谁知道,还是请高手给我解答下,在下不胜感激。不过,博主还是建议各位以后写这样的代码的时候多注意些。
相关阅读 更多 +