在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());
重新运行后,效果如下,每次都会产生不同的颜色: