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)就可以了,保证任何随机数的产生种子都不同 --------------------编程问答--------------------
--------------------编程问答-------------------- 在初始化之前new Random
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++;
}
}
建立一个数组把所有待选数都导入
然后循环random.Next(Length)一个索引,取出一个数后,把最后一个数调过来,--Length --------------------编程问答-------------------- 用什么都可以(通常不用写)。
关键是你要把变量定义为static的。
补充:.NET技术 , C#