关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

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

发布时间:2019-12-30 17:09:32

在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);

            }


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

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

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

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

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

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



/template/Home/Zkeys/PC/Static