有关诡异的随机数问题
2011-03-18 20:58 随风浪迹天涯 阅读(370) 评论(6) 编辑 收藏 举报昨天,在写一个有关验证码框的程序,我想的是用把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);
这样就没没有错误了!
其实,到现在,我还不能确切这个问题哪里出错了。如果有谁知道,还是请高手给我解答下,在下不胜感激。不过,博主还是建议各位以后写这样的代码的时候多注意些。
作者:Lanny☆兰东才
出处:http://www.cnblogs.com/damonlan
Q Q:*********
E_mail:Damon_lan@163.com or Dongcai.lan@hp.com
出处:http://www.cnblogs.com/damonlan
Q Q:*********
E_mail:Damon_lan@163.com or Dongcai.lan@hp.com
本博文欢迎大家浏览和转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,在『参考』的文章中,我会表明参考的文章来源,尊重他人版权。若您发现我侵犯了您的版权,请及时与我联系。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步