2013-10-23 135 views
2

我真的不明白Random.Next(minValue,maxValue)。 這總是給我 「1」:Random.Next - 我不明白

rnd.Next(1,2) 

然而,這似乎產生了1或2:

rnd.Next(1,3) 

然而,作爲第二個參數被稱爲 「包括maxValue」,應該不會吧也包含在Random.Next()的可能結果中?

回答

11

如果API聲明它不包含,則不應該。

http://msdn.microsoft.com/en-us/library/2dx6wyd4.aspx

說包括maxValue是一個獨特的價值和minValue(最小值)是包容。所以不,它不包含maxValue。

編輯:當使用您不熟悉的API時,這導致了一個很好的教導點。儘管在編程實踐中變量名應該清楚,以便幫助程序員快速瞭解它應該表達的含義以及它的用途,但最好還是查看該函數的API文檔(如果可用)更詳細地瞭解它的功能。我希望這有幫助!

+3

這背後的原因是使其更容易做一些事情,比如'someArray [rand.Next(0,someArray.Length)]'這樣做會給你一個來自整個數組範圍的隨機元素,並且永遠不會拋出'IndexOutOfBoundsException'而不必執行任何數學計算捕捉最大和最小指標。還有其他的「便利」,但最容易展現。 –

0
Dim rnd as new Random 
Dim randv as integer 

randv = rnd.next(minValue, maxValue) 

集「新」產生最小和最大值之間有更多不同的整數

如果你設置這個,你會得到很多不同的隨機整數

randv = rnd.next(0, 99999) 
+1

你甚至讀過這個問題嗎?他知道如何使用Random.next,他說他對maxValue參數的包容性感到困惑。 –