【发布时间】:2014-05-19 10:26:33
【问题描述】:
我写了这个类来生成一个随机代码,它不应该创建任何两个重复的数字。 我想知道,在这段代码中,我们发生碰撞的可能性有多大?
public string MyRandom()
{
Random r = new Random();
int x = r.Next(1000);//Max range
PersianCalendar pc = new PersianCalendar();
string _myrandom = pc.GetMonth(DateTime.Now).ToString() + pc.GetDayOfMonth(DateTime.Now).ToString() + pc.GetHour(DateTime.Now).ToString() + pc.GetMinute(DateTime.Now).ToString() + pc.GetSecond(DateTime.Now).ToString() + pc.GetMilliseconds(DateTime.Now).ToString() + x.ToString();
return _myrandom;
}
【问题讨论】:
-
如果您在循环中调用它,则很可能会发生碰撞。您需要删除该随机变量并将其粘贴到方法之外或为其提供方法参数。旁注:我会将
DateTime.Now存储在一个变量中,它并不像人们想象的那样便宜。 -
我没有在循环中使用那个类,这个生成器用于命名在我的应用程序中上传的照片。
-
我假设因为我在其中使用 GetMilliseconds,我们从来没有发生过冲突,这不对吗?
-
@user3117091 好吧,不。如果您有多个线程同时尝试保存文件,则可以保证发生冲突。认真阅读 L-Three 发布的内容。 stackoverflow.com/questions/1654887/…
标签: c# asp.net datetime random calendar