02 随机器Random产生指定范围里面随机数
1.前提
1.1 随机器的使用方法(以获取[0,3)范围内的整数为例)
第一步: Random random=new Random();
第二步: int age=random.nextInt(3);//测试结果表明可以输出0,1,2这三个数
总结规律如下:
若random.nextInt(n)----->可以取到从0开始到n-1这n个数
2.1分析
随机器取不到n本身这个数的,如何取到呢?
解决方法: 取n+1个数,n+1虽取不到但n这个数可以取到
随机器的范围是默认从o开始的,如何从不为0的数开始呢?
在数学中,[0,20)变成[10,30)这个区间采用的方法如下:
把[0,20)这个区间的所有数都加10--------> [0+10,20+10)
所以我们也只需要把[0,m+1)这个区间加上左端点的值就行
[0+n,m+1+n)------->[n,m+n+1)-------->函数外面加上n的意思
而[n,m]的范围中的数的个数为m-n+1,所以求[n,m]区间里的随机数,括号里应该填m-n+1
2.2解决方法为: random.nextInt(m-n+1)+n
个人理解,括号里填要产生随机数的个数,如果要产生的随机数的区间的左端点值为n
那么可以加上在括号后面加上n(注意:n是带着它的符号走的,无论是正负,都是加上n这个符号的数)