随机4位数验证码的问题

lyp2281231 2009-09-13 10:57:13
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位随机数呢?

没搞懂,求各位大虾帮忙 解释下
...全文
131 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
diffmaker 2009-09-13
  • 打赏
  • 举报
回复

1+1=2;
"1"+1="11";

这样说明白了吗?
diffmaker 2009-09-13
  • 打赏
  • 举报
回复
string valid=string.Empty ;

valid是字符串,+在这里是字符串相连,而不是数字上的加
lyp2281231 2009-09-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lmtz 的回复:]
r.NextDouble 返回一个介于 0.0 和 1.0 之间的随机数。
r.NextDouble()*10 返回了0 <= 9.99999999...
math.floor 返回0到9之间的数字

for(int i=0;i <4;i++) 生成了四个数字

[/Quote]
额,貌似懂了点了。。。但还有点问题
r.NextDouble()*10 返回了0 <= 9.99999999... 当为生成了0-10的数字
for循环了四次,4个0-10的数字相加 也没有 4位数那么大啊???
wuyq11 2009-09-13
  • 打赏
  • 举报
回复
每次以为,循环四次
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();
}
LMTZ 2009-09-13
  • 打赏
  • 举报
回复
r.NextDouble 返回一个介于 0.0 和 1.0 之间的随机数。
r.NextDouble()*10 返回了0 <= 9.99999999...
math.floor 返回0到9之间的数字

for(int i=0;i <4;i++) 生成了四个数字
离子漂浮物 2009-09-13
  • 打赏
  • 举报
回复
Math.Floor (r.NextDouble()*10).ToString() 是随机生成一个个位数数字

然后是循环累加到valid字符串内。这样说明白了吗?
-过客- 2009-09-13
  • 打赏
  • 举报
回复
。。。

那不是还有个for循环吗
for(int i=0;i <4;i++)
wangjiafeng2008 2009-09-13
  • 打赏
  • 举报
回复
for循环大哥

110,529

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧