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

来源:互联网 发布:win10系统怎么优化 编辑:程序博客网 时间:2024/05/14 23:14

题目:
          模拟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

原创粉丝点击