您的位置:首页 > 编程语言 > C#

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

2011-12-25 22:25 260 查看
转自: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,就极少会出现重复数了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: