2010-10-08 79 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)