C#中Random()在for循环内使用的困惑

题目:
          模拟n个人参加选举的过程,并输出选举结果:假设候选人有四人,分别用A、B、C、D表示,当选某候选人时直接输入其编号(编号由计算机随机产生),若输入的不是A、B、C、D则视为无效票,选举结束后按得票数从高到低输出候选人编号和所得票数。

 

这时需要用random来给A,B,C,D随机投票.有N个人,所以使用FOR循环,然而发现Random x = new Random();在FOR循环内时:
ran = x.Next(0, 5) + 65;     //所产生的数字是同一个.

把Random x = new Random();弄到FOR循环外就能成功了.

据说产生这个情况的原因可能是FOR循环内,计算机运算太快,所以导致产生的随机数都是同一个.但是使用System.currentTimeMillis()都不行.

但是,如果把X定义弄到FOR循环外,或者用Thread.Sleep(15)来暂停15毫秒的话,就能正常运作了.
还是很费解啊.

======================

2011年3月30日在校内网发的....4.12转到CSDN
怀疑这个随即数生成时都是固定的一个数组
调用时是按照时间不同调用不同位置的数而已.
但是为什么在FOR循环内调用时间也是很快,但是调用时是不同的数了呢?
今天还是无法理解...

http://www.renren.com/profile.do?id=252260104

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值