private void GenValid()
{
Random r= new Random();
string valid=string.Empty ;
for(int i=0;i<4;i++)
    {
valid+=Math.Floor (r.NextDouble()*10).ToString() ;
}
label5.Text =valid;
}
这就是源代码,随机生成4位数字验证码的函数valid+=Math.Floor (r.NextDouble()*10).ToString() ;这一步,我没有看懂
为什么会这样呢? r.nextdouble生成的是0-1的随机数字,乘以10 也不过是1位整数
math.floor 返回小于或者等于最大的整数,这样怎么就产生了4位随机数呢?没搞懂,求各位大虾帮忙 解释下

解决方案 »

  1.   

    那不是还有个for循环吗
    for(int i=0;i <4;i++) 
      

  2.   

     Math.Floor (r.NextDouble()*10).ToString() 是随机生成一个个位数数字然后是循环累加到valid字符串内。这样说明白了吗?
      

  3.   

    r.NextDouble      返回一个介于 0.0 和 1.0 之间的随机数。
    r.NextDouble()*10 返回了0 <= 9.99999999...
    math.floor        返回0到9之间的数字for(int i=0;i <4;i++) 生成了四个数字
      

  4.   

    每次以为,循环四次
     char code;
            string checkCode = String.Empty;
            System.Random random = new Random();
            for (int i = 0; i < 4; i++)
            {
                number = random.Next();
                if (number % 2 == 0)
                    code = (char)('0' + (char)(number % 10));
                else
                    code = (char)('A' + (char)(number % 26));            checkCode += code.ToString();
            }
      

  5.   

    额,貌似懂了点了但还有点问题
     r.NextDouble()*10 返回了0  <= 9.99999999...  当为生成了0-10的数字
    for循环了四次,4个0-10的数字相加 也没有 4位数那么大啊???
      

  6.   

    string valid=string.Empty ;
    valid是字符串,+在这里是字符串相连,而不是数字上的加