zoukankan      html  css  js  c++  java
  • 有关诡异的随机数问题

    昨天,在写一个有关验证码框的程序,我想的是用把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);

    这样就没没有错误了!

    其实,到现在,我还不能确切这个问题哪里出错了。如果有谁知道,还是请高手给我解答下,在下不胜感激。不过,博主还是建议各位以后写这样的代码的时候多注意些。

  • 相关阅读:
    No bean named 'springSecurityFilterChain' is defined
    Spring管理hibernate Session
    集成hibernate
    Maven setting.xml
    SpringMVC集成Spring
    搭建SpringMVC
    一个简单的web project
    一文带你认识Java8中接口的默认方法
    抽象类和模板方法模式
    可能你不知道的,关于自动装箱和自动拆箱
  • 原文地址:https://www.cnblogs.com/damonlan/p/1988318.html
Copyright © 2011-2022 走看看