求固定空間的隨機數 e.g.[56, 98] 區間的值
先講Random類的方法:(知道的請直接跳到分隔線閱讀)
Random random = new Random();
random.nextInt(int n);
public int nextInt(int n)
返回[0,n) 區間的值, 0爲閉區間, n爲開區間.
注意:在java中, 凡是有區間的, 前面必定是閉區間, 後面必定是開區間, 也就是半開半閉區間
如果要返回0-100之間的值, 則寫成random.nextInt(101);
那麼, 如果要返回[56, 98] 區間的值怎麼辦?
[56, 98] → [0, n) 就是一道數學題, 怎麼讓”左邊的區間”包括”右邊的區間”, 請看下面的推導:
[56, 98] = [56-56, 98-56] + 56 = [0, 42] + 56 = [0, 42 + 1) + 56 = [0, 43) + 56 = random.nextInt(43) + 56
總結一下, 43是如何來的?
43 = 98 - 56 + 1; //最小值爲56, 最大值爲98
num = max - min + 1;
則公式爲: random.nextInt(max - min + 1) + min;
代碼具體實現:
public static int numRandom(int min, int max) {
Random random = new Random();
int i = random.nextInt(max - min + 1) + min;
return i;
}