当前位置:编程学习 > C#/ASP.NET >>

C#随机数问题:使用什么样的种子,能在狭窄的范围内取得大量各不相同的随机数?

例如:0-15内取10个随机数。
使用默认的Time作为种子,对于速度快的机器,很多可能产生相同的随机数。
有人说用Guid.NewGuid().GetHashCode()做种子,但是我试验过还是会出现相同。
请问这个问题没办法解决吗? --------------------编程问答-------------------- Random ra=new Random((unchecked)(int)DataTime.Now.Ticks); --------------------编程问答-------------------- randon --------------------编程问答-------------------- 用arraylist+random --------------------编程问答-------------------- 用 Random random = new Random(System.DateTime.Now.Millisecond); --------------------编程问答-------------------- 嗯,楼上的可以,用时间做种子就好 --------------------编程问答-------------------- 又学习了一招 --------------------编程问答-------------------- To 4楼:
用 Random random = new Random(System.DateTime.Now.Millisecond); 
这样的结果还是产生相同的随机数,需要在下面加上Thread.Sleep(1)就可以了,保证任何随机数的产生种子都不同 --------------------编程问答--------------------

            HashSet<int> result = new HashSet<int>();
            Random rand = new Random(Guid.NewGuid().GetHashCode());
            int total = 0;
            while (total < 10)
            {
                int item = rand.Next(0, 16);
                if (!result.Contains(item))
                {
                    result.Add(item);
                    total++;
                }
            }
--------------------编程问答-------------------- 在初始化之前new Random 
建立一个数组把所有待选数都导入
然后循环random.Next(Length)一个索引,取出一个数后,把最后一个数调过来,--Length --------------------编程问答-------------------- 用什么都可以(通常不用写)。

关键是你要把变量定义为static的。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,