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

C# Random对象短时间内产生不重复的随机数

2016-10-17 10:52 429 查看
在C#中产生随机数是一个比较常用的需求,产生随机数需要使用Random对象,Random对象默认以时间作为种子,产生随机数,调用Random对象中的方法时可产生不同的随机数,但是需要在短时间内产生多个随机数时,采用时间做种子则达不到要求,比如一个简单的产生随机数生成多个颜色的例子,代码如下(产生随机数部分):

private string GetRGBAColor(double a)
{
//采用默认构造,声明对象,即以时间为种子
Random random = new Random();
int r=random.Next(255);
int g = random.Next(255);
int b = random.Next(255);
return string.Format("rgba({0},{1},{2},{3})", r, g, b, a);
}
//函数调用部分
int iCount=3;
string[] arrBgColors=new string[iCount];
string[] arrBorderColors=new string[iCount];

for (int i = 0; i < iCount; i++)
{
arrBgColors[i] = GetRGBAColor(0.2);
arrBorderColors[i] = GetRGBAColor(1);
}


在不调试状态下,程序每次产生的颜色如下图:



在查阅资料后,将Random对象的种子采用GUID来声明,如下:

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


重新运行后,效果如下,每次都会产生不同的颜色:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  random c#