C# 循环产生多个随机数重复问题

转自:http://hi.baidu.com/pmssh/blog/item/8214d11f9f63e868f624e4ac.html

      今天在做项目的时候,由于要批量生成充值卡,充值卡的密码是随机产生,结果在程序运行时,充值卡的密码几乎都是一样的,于是手动调试,调试生产的密码又不一样,纳闷半天,仔细一想,随机可能是以时间为种子,于是就换了个全局的Random   ,再运行程序,一切正常:

 

      分析:

出现相同的原因: 
Random是根据时间产生随机数的,在实际运行的时候,没有断点,所以两句话执行的时间间隔非常短,无法被计时器识别,所以用的是一个相同的时间做的种子,就得到了相同的随机数 
调试的时候两句话之间的时间足够长,所以种子也不同,就产生了不同的随机数 
只有一个Random对象的话他会用上一次产生的结果生成种子,所以两次rnd.Next所产生的数很少会相同的

 

所以建议把Random rnd=new Random();做成一个类成员,声明为 
private static Random rnd=new Random(); 
程序运行一次只创建一个Random,就极少会出现重复数了




阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页