先讲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;
}