关于产生随机数的问题?

threemonths 2006-09-17 08:50:21
我现在想产生一个随机的数,譬如我想一次产生5个,譬如
for(int i=0;i<5;i++)
{
Random Rdm = new Random();
int aa = Rdm.Next(0,100);
Response.Write(aa +"<br />");
}

但是这样每次产生的5个数都是相同的,请问怎样让这5次产生的数各不相同?

谢谢~~
...全文
144 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jun_01 2006-09-17
  • 打赏
  • 举报
回复
========
怎么才能实现不重复的呢??
========
随机数并不能保证不重复,如果你想完全不重复,比如要生成验证码。可以自己加个判断。

把生成的数放到一个集合里,生成后判断集合里边有没有,如果有就继续生成下一个,如果没有,再放进集合。

等集合里边元素等于5个时退出。
aliketen 2006-09-17
  • 打赏
  • 举报
回复
for(int i=1;i<=needNum;i++)
{
//这里显示需要的随机数位数
int aa = GetRandomNum(i,8,10000000,99999999);
Response.Write(aa +"<br />");
}


private int GetRandomNum(int i,int length,int up,int down)
{
int iFirst=0;
Random ro=new Random(i*length*unchecked((int)DateTime.Now.Ticks));
iFirst=ro.Next(up,down);
return iFirst;
}
yonghengDs 2006-09-17
  • 打赏
  • 举报
回复
Random Rdm = new Random();

for(int i=0;i<5;i++)
{
int aa = Rdm.Next(0,100);
Response.Write(aa +"<br />");
}
这段代码还是会出现重复的呢....
怎么才能实现不重复的呢??
jun_01 2006-09-17
  • 打赏
  • 举报
回复
Random Rdm = new Random();
这是用当前电脑自启动以来所运行的毫秒数(vc里的GetTickCount)来初始化随机数生成器的。

而目前的cpu,1毫秒中可以执行很多条指令。所以你那些Rdm都是用同一个数初始化的。

而普通的随机数生成器,相同的种子,其产生的随机数是相同的。

所以,你得到的“随机数”并不随机。解决办法2楼已经说了。
siugwan 2006-09-17
  • 打赏
  • 举报
回复
试试不要在循环内实例化

Random Rdm = new Random();

for(int i=0;i<5;i++)
{
int aa = Rdm.Next(0,100);
Response.Write(aa +"<br />");
}

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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