惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
Hugging Face - Blog
Hugging Face - Blog
博客园_首页
爱范儿
爱范儿
罗磊的独立博客
美团技术团队
Jina AI
Jina AI
量子位
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
酷 壳 – CoolShell
酷 壳 – CoolShell
有赞技术团队
有赞技术团队
V
V2EX
阮一峰的网络日志
阮一峰的网络日志
小众软件
小众软件
IT之家
IT之家
雷峰网
雷峰网
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 司徒正美
大猫的无限游戏
大猫的无限游戏
博客园 - 聂微东
月光博客
月光博客
人人都是产品经理
人人都是产品经理
博客园 - 三生石上(FineUI控件)

博客园 - 永不放弃-Jack wu

在IIS7下,利用Intelligencia.UrlRewriter进行URLReWrite Sql Service 常用函数 select时锁定记录问题 实现一个用户取过的数据不被其他用户取到 C# 循环产生多个随机数重复问题 中国移动MM7 API用户手册(八) 中国移动MM7 API用户手册(七) 中国移动MM7 API用户手册(五) 中国移动MM7 API用户手册(六) 中国移动MM7 API用户手册(四) 中国移动MM7 API用户手册(三) 中国移动MM7 API用户手册(二) 中国移动MM7 API用户手册(一) ASP.NET中进行消息处理(MSMQ) 三 ASP.NET中进行消息处理(MSMQ) 二 ASP.NET中进行消息处理(MSMQ) 一 五险一金相关知识(转) 彩信SMIL文件学习 Log4Net使用指南
确保绝对随机数(无重复)
永不放弃-Jack wu · 2011-04-23 · via 博客园 - 永不放弃-Jack wu

在使用 C# 产生随机数时,一般来说大家都不希望会有重复的出现,但有时候确很难避免这种情况发生。

如在运行一个程序时,要连续产生多个随机数,而且期间的时间间隔非常短,这时候就会出问题了,最基本的产生随机数写法是:

1

Random r = new Random();

但这事必不能解决上面所提的情况,会产生很多完全相同的随机数,所以必须在产生时添加一个随机数因子的参数,这样可以避免出现重复的可能性,不过这个随机数因子要如何确定呢?

我之前试过使用时间毫秒来做,感觉应该算是可以的了:

1

Random r = new Random(unchecked((int)(DateTime.Now.Ticks)));

这也是MSDN上的做法了,不过就算这样,现在的电脑运行速度还是太快了,所以一样会有机会出现重复的,而且机会还不少哦,然后我就尝试每次运行前将 Tick 加 1,不过总还是不能彻底解决,只是将机率减少而已。

不过解决的办法总会有的,其实有一个绝对可以保证无重复的方法,就是使用 GUID 来做随机因子,大家都知道,GUID是绝对不可能重复的啦,所以用其来做因子就是最好的选择,代码如下:

1

Random r = new Random(Guid.NewGuid().GetHashCode());

呵,这样就可以解决以上的重复问题了! :biggrin: