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个数

1.2随机器产生的随机数一定是数字

2.随机器产生指定范围[n,m]内的随机数

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这个符号的数)

3.常识补充

         在java生产环境中,函数的区间大多都是左开右关(即左端点取得到,右端点取不到)--->[初始值,结束值)

 

原文地址:https://www.cnblogs.com/SSSzhanglingzhi/p/13931077.html