摘要: 在使用 C# 产生随机数时,一般来说大家都不希望会有重复的出现,但有时候确很难避免这种情况发生。如在运行一个程序时,要连续产生多个随机数,而且期间的时间间隔非常短,这时候就会出问题了,最基本的产生随机数写法是:1Random r = new Random();但这事必不能解决上面所提的情况,会产生很多完全相同的随机数,所以必须在产生时添加一个随机数因子的参数,这样可以避免出现重复的可能性,不过这个随机数因子要如何确定呢?我之前试过使用时间毫秒来做,感觉应该算是可以的了:1Random r = new Random(unchecked((int)(DateTime.Now.Ticks)));这也 阅读全文
posted @ 2011-04-23 02:00 永不放弃-Jack wu 阅读(486) 评论(1) 推荐(0) 编辑
摘要: 今天在做项目的时候,由于要批量生成充值卡,充值卡的密码是随机产生,结果在程序运行时,充值卡的密码几乎都是一样的,于是手动调试,调试生产的密码又不一样,纳闷半天,仔细一想,随机可能是以时间为种子,于是就换了个全局的Random ,再运行程序,一切正常: 分析:出现相同的原因: Random是根据时间产生随机数的,在实际运行的时候,没有断点,所以两句话执行的时间间隔非常短,无法被计时器识别,所以用的是一个相同的时间做的种子,就得到了相同的随机数 调试的时候两句话之间的时间足够长,所以种子也不同,就产生了不同的随机数 只有一个Random对象的话他会用上一次产生的结果生成种子,所以两次rnd.Nex 阅读全文
posted @ 2011-04-23 01:48 永不放弃-Jack wu 阅读(520) 评论(0) 推荐(0) 编辑