前言
JS沒有現成的函數,能夠直接生成指定范圍的隨機數。
但是它有個函數:Math.random() 這個函數可以生成 [0,1) 的一個隨機數。
利用它,我們就可以生成指定范圍內的隨機數。
而涉及范圍的話,就有個邊界值的問題。這樣就包含四種情況:
1)min ≤ r ≤ max (一般這種比較常見)
2)min ≤ r < max
3) min < r ≤ max
4)min < r < max
一、min ≤ r ≤ max
function RandomNumBoth(Min,Max){ var Range = Max - Min; var Rand = Math.random(); var num = Min + Math.round(Rand * Range); //四舍五入 return num; }
二、min ≤ r < max
function RandomNum(Min, Max) { var Range = Max - Min; var Rand = Math.random(); var num = Min + Math.floor(Rand * Range); //舍去 return num; }
三、min < r ≤ max
1 function RandomNum(Min, Max) { 2 var Range = Max - Min; 3 var Rand = Math.random(); 4 if(Math.round(Rand * Range)==0){ 5 return Min + 1; 6 } 7 var num = Min + Math.round(Rand * Range); 8 return num; 9 }
四、min < r < max
1 function RandomNum(Min, Max) { 2 var Range = Max - Min; 3 var Rand = Math.random(); 4 if(Math.round(Rand * Range)==0){ 5 return Min + 1; 6 }else if(Math.round(Rand * Max)==Max) 7 { 8 index++; 9 return Max - 1; 10 }else{ 11 var num = Min + Math.round(Rand * Range) - 1; 12 return num; 13 } 14 }
五、對上面的結果進行測試
PS:第三、四的實現方法不是很嚴謹,雖然測試時生成隨機數的概率還算符合結果。求大神賜教!