C#随机数重复问题


转自:https://blog.csdn.net/herogui/article/details/51518923?utm_source=blogxgwz0

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

 

      分析:

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

 

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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM