2017-05-30 71 views
0

嘿,我試圖從方法返回一個隨機數。我的代碼工作,它返回一個隨機數,但問題是,它返回相同的數字,如果我在相同的while循環中使用它兩次,我該如何解決這個問題?如果問題得到解決。C#在while循環中返回一個隨機數兩次

我的代碼看起來象

private int ReturnARandomNumber(int min, int max) 
{ 
    var randomNumber = new Random(); 
    return randomNumber.Next(min, max); 
} 

- 莫滕syhler

+0

不創建一個新的隨機每次你的電話吧。 – pm100

+0

並不總是如此,但調用速度足夠快。 – TaW

+0

你可以使Random成爲一個靜態變量,所以它將用於不同的實例,隨機數也會在你的每個類實例中不同。 – Droa

回答

2

您應該移動的聲明:

var randomNumber = new Random(); 

該方法範圍的給類範圍:

var randomNumber = new Random(); 
private int ReturnARandomNumber(int min, int max) 
{ 
    return randomNumber.Next(min, max); 
} 
+0

哇快速回復謝謝!它的工作:) –

+0

你應該解釋爲什麼這個工程。 – Enigmativity

-1

該se用於生成隨機數的ed是基於當前時間的。解決這個問題的方法之一是讓Random成爲函數中的一個參數,以便您可以在循環之外初始化它。

1

不要每次創建一個新的Random對象。 Random使用當前時間作爲默認種子,並且如果您經常在緊密循環中調用該函數,則在隨後的調用中獲得相同的種子值。 Random效果最好,如果您重新使用相同的對象在一段時間:

private Random randomNumber = new Random(); 
private int ReturnARandomNumber(int min, int max) 
{  
    return randomNumber.Next(min, max); 
}