求固定空间的随机数

求固定空间的随机数 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;
}

你可能感兴趣的:(01,java技巧总结,java,random,区间)