Random随机数

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

 /// <summary>
        /// 从逗号分隔的字符串中随机取出N个字符节
        /// </summary>
        /// <param name="StrIds"></param>
        /// <param name="TopN"></param>
        /// <returns></returns>
        public List<string> getListId(string StrIds, int TopN)
        {
            var Array = StrIds.Split(',');
            List<string> list = new List<string>();
            int temp = 0;
            while (temp<TopN)
            {
                Random random = new Random(Guid.NewGuid().GetHashCode()); // 加入 Guid.NewGuid().GetHashCode()  作为种子目的是为了在短时间内循环不重复取出同样数据       
                int r = random.Next(Array.Length);
                string result = Array[r];
                if (!list.Contains(result))
                {
                    Thread.Sleep(100);
                    list.Add(result);
                    temp++;                   
                }
            }
            return list;
        }

 

posted on 2018-06-09 14:18  欢笑一声  阅读(90)  评论(0)    收藏  举报

导航