可能重複:
Java: generating random number in a range產生的範圍(代碼)隨機整數
我無法理解什麼是Random類和它的方法happenning。 會有人解釋它,PLZ?
或者有沒有更簡單的方法來產生隨機數?
注:我想了解函數的代碼(Random.nextInt),而不是如何使用它。
可能重複:
Java: generating random number in a range產生的範圍(代碼)隨機整數
我無法理解什麼是Random類和它的方法happenning。 會有人解釋它,PLZ?
或者有沒有更簡單的方法來產生隨機數?
注:我想了解函數的代碼(Random.nextInt),而不是如何使用它。
什麼是難以理解的?有產生幾乎所有類型的隨機數的方法......你想要的大概是這樣的:
int nextInt(int n)
返回一個僞隨機,介於0(含)均勻分佈的int值和指定值(不包括),從這個隨機數發生器的序列中抽取出來。
編輯:你問如何實際的功能。這也是在函數的javadoc中解釋的。如果您對細節更感興趣,您應該可以獲得文檔中引用的D. Knuth書(從http://download.oracle.com/javase/1.4.2/docs/api/java/util/Random.html):
該類的一個實例用於生成僞隨機數字流。該類使用48位種子,使用線性同餘公式進行修改。 (見Donald Knuth,「計算機編程的藝術」,第2卷,第3.2.1節。)
如果使用相同的種子創建了兩個Random實例,並且爲每個實例創建了相同的方法調用序列,生成並返回相同的數字序列。爲了保證這個屬性,爲Random類指定了特定的算法。爲了Java代碼的絕對可移植性,Java實現必須使用此處所示的Random類所有算法。然而,Random類的子類可以使用其他算法,只要它們遵守所有方法的通用契約。
由類Random實現的算法使用受保護的實用程序方法,在每次調用時可以提供多達32個僞隨機生成的位。
許多應用程序都會發現類Math中的隨機方法更容易使用。
如果你想X(含)和y(不含)之間的隨機整數,這裏就是你要做的:
int yourRandomNumber = new Random().nextInt(y-x) + x;
例如:如果你想隨機選擇[4,5,6,7] ,你會這樣做:
int yourRandomNumber = new Random().nextInt(4 /* i.e. 8-4 */) + 4;
我不認爲我會用大寫字母拼出來......但你確實......;)我認爲OP可以自己添加/減去...... :) –
thx,但我需要了解的是,該函數的代碼。 – abhi1289