02 隨機器Random產生指定範圍裡面隨機數
阿新 • • 發佈:2020-11-05
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生產環境中,函式的區間大多都是左開右關(即左端點取得到,右端點取不到)--->[初始值,