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,就极少会出现重复数了
今天在做项目的时候,由于要批量生成充值卡,充值卡的密码是随机产生,结果在程序运行时,充值卡的密码几乎都是一样的,于是手动调试,调试生产的密码又不一样,纳闷半天,仔细一想,随机可能是以时间为种子,于是就换了个全局的Random ,再运行程序,一切正常:
分析:
出现相同的原因:
Random是根据时间产生随机数的,在实际运行的时候,没有断点,所以两句话执行的时间间隔非常短,无法被计时器识别,所以用的是一个相同的时间做的种子,就得到了相同的随机数
调试的时候两句话之间的时间足够长,所以种子也不同,就产生了不同的随机数
只有一个Random对象的话他会用上一次产生的结果生成种子,所以两次rnd.Next所产生的数很少会相同的
所以建议把Random rnd=new Random();做成一个类成员,声明为
private static Random rnd=new Random();
程序运行一次只创建一个Random,就极少会出现重复数了
相关文章推荐
- C# 循环产生多个随机数重复问题
- C# 循环产生多个随机数重复问题
- C#的解题思路(1):不重复随机数的产生问题 .
- C#的解题思路(1):不重复随机数的产生问题
- C#的解题思路(1):不重复随机数的产生问题
- C# Random循环生成随机数重复问题解决方案
- C#的解题思路(1):不重复随机数的产生问题
- C#的解题思路(1):不重复随机数的产生问题
- C#的解题思路(1):不重复随机数的产生问题
- C# 不重复随机数的产生问题
- C# Random对象短时间内产生不重复的随机数
- 一个C#随机数的问题,解决随机数重复
- C#Random产生随机数重复问题
- 一个C#随机数的问题,解决随机数重复
- C# 产生不重复的随机数
- C#产生不重复的随机数并生成随机文件名
- c# Random太快产生的随机数会重复
- C# 随机数重复问题
- c#自动产生随机数的问题
- C# 中产生10个不重复的随机数