2010-11-18 123 views
2

什麼是在C#中的兩個數字之間選擇一個隨機數的最佳方法?隨機函數在C#

例如,如果我有一個23的低值和9999的高值,那麼正確的代碼是什麼來選擇一個包含這兩個數字之間的隨機數? 在此先感謝

+0

數字應該從範圍內統一選擇? – 2010-11-18 12:21:10

回答

7

這取決於您是否正在尋找一個整數或雙。對於整數使用Random.Next(minValue, maxValue)

返回指定範圍內的隨機數。

請注意,minValue是包含值,但maxValue是獨佔的。

在指定範圍內沒有選擇隨機雙數的等價方法。相反,您應該使用NextDouble方法來選擇0.0到1.0之間的隨機數,然後使用線性變換來擴展,縮小和/或平移範圍。

+0

你確定嗎?我在VS中編寫這段代碼,但在隨機函數中沒有像'Next'這樣的子類。 Tnx爲您提供幫助 – Amra 2010-11-18 09:42:55

+0

@Eva:這是一個實例方法 - 您需要一個Random對象(例如,您的程序啓動時可以創建一個)。 – 2010-11-18 09:45:20

+0

@Eva - 如果這是你正在做的事情,沒有靜態的Next函數,所以你不能簡單地寫Random.Next。詳情請參閱我的回答。 – 2010-11-18 09:46:20

12

使用Random類是這樣的:

Random rnd = new Random(); 
rnd.Next(23, 10000); 

請確保您只初始化RND對象一次,以確保它真正產生隨機值給你。

如果你把這個循環,例如:

for(int i = 0 ; i < 10; i++){ 
    Random rnd = new Random(); 
    var temp = rnd.Next(23, 10000); 
} 

臨時會每次都一樣的,因爲相同的種子被用於生成RND對象,但這樣的:

Random rnd = new Random(); 
for(int i = 0 ; i < 10; i++){ 
    var temp = rnd.Next(23, 10000); 
} 

它會產生10個唯一的隨機數(但當然,偶然的情況下,兩個或更多的數字可能是相等的)

+1

+1,用於解釋典型的「隨機」問題。 – 2010-11-18 09:43:37

+0

謝謝。如果我想從文本文件中選擇一個隨機字符串,我該怎麼辦? – Amra 2010-11-18 09:46:35

+0

@Eva:最簡單的方法是從文本文件中讀取所有行,記住它們並對它們進行計數,然後根據計數選擇一個隨機數。 – 2010-11-18 09:49:02