2010-10-08 93 views
1

可能重复:
Why does it appear that my random number generator isn't random in C#?问题中产生的随机数

亲爱的朋友们

我要产生1之间的4个随机数 - 55,但问题是,大多数的时间我收到2号码相同:(例如生成的号码是2 2 5 9或11 11 22 22! 我不知道为什么? 我使用:

Random random = new Random(); 
return random.Next(min, max); 

用于生成我的随机数。我把它们放在一边,重复4次。任何想法?你能帮我吗?

+1

不要重新创建'random'对象 - 重用单个实例。请参阅[为什么看起来我的随机数生成器在C#中不是随机的?](http://stackoverflow.com/questions/932520/why-does-it-appear-that-my-random-number-generator- isnt-random-in-c) – 2010-10-08 03:28:40

+0

这就是随机性的问题:你永远无法确定它是异常的“不随机的”,还是真正的随机。 – rovaughn 2010-10-08 03:31:41

回答

4

您应该只创建一个Random()对象并重用它,而不是为您生成的每个随机数创建一个新对象。

原因是,每次创建一个新的Random对象时,它都会从当前时间开始播种。如果你在短时间内创建多个随机对象,那么他们将同时播种,因此它们将生成相同的数字。

0

当您创建new Random()而未指定种子时,它会使用当前系统时间对其进行种子处理。

我不记得它使用的精度(ticks?毫秒?),但如果你创建新的Random对象并快速连续使用它们,它们可以很容易地拥有相同的种子,从而返回相同的结果。

创建一个new Random(),并重复调用.Next(min, max)