生成指定範圍內的隨機數html
import java.util.Random; public class Test { public static void main(String[] args){ Random rand = new Random(); for(int i=0; i<10; i++) { System.out.println(rand.nextInt(100) + 1); } } }
編譯運行,輸出結果爲:
81
64
31
86
56
14
45
57
28
90
屢次運行,結果每次都不一樣,但取值必定會在 1 和 100 之間,可能出現 1 和 100。
同理,很容易知道若是要得到隨機兩位整數,代碼寫成:
rand.nextInt(90) + 10;
你必定很驚訝,爲何是這麼寫出來的。其實,在 nextInt() 方法中做爲參數的數字 90 表示:你但願生成的隨機數的全部取值的可能性的數量(在本命題中,兩位整數取值爲 [10, 99],共90個數);加好後面的數字 10 ,表示區間的最小取值。
你能夠驗證下,按照這樣理解,[1, 100] 的隨機數,是否是應該寫成 rand.nextInt(100) + 1 。千萬不要把參數 100 理解爲最大取值。只是區間 [1, 100] 正好從 1 開始,因此最大取值和取值可能性數量正好同爲 100。
所以,
生成隨機三位數的代碼爲:
rand.nextInt(900) + 100;
生成區間 [64, 128] 中隨機值的代碼爲:
rand.nextInt(65) + 64;
取值可能性的數量是如何計算出來的呢?固然是 最大取值-最小取值+1 ,因此,有最終公式以下:
// For Java
java
// randNumber 將被賦值爲一個 MIN 和 MAX 範圍內的隨機數
int randNumber = rand.nextInt(MAX - MIN + 1) + MIN;
在微軟平臺下,因爲 .Net Framework 提供了相應的方法來生成固定區間的整數,因此公式爲:程序員
// randNumber 將被賦值爲一個 MIN 和 MAX 範圍內的隨機數
int randNumber = rand.Next(MIN, MAX + 1);