求固定空間的隨機數

求固定空間的隨機數 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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章