Math.random()方法返回介於0 ~ 1 的一個隨機數,不包括0和1,對於一些場景,這樣的返回值很有用。比如,新聞網站用於隨機顯示新聞事件,套用下面的公式,就可以利用Math.random()方法從某一范圍內隨機選擇一個值。
value = Math.floor(Math.random() * 范圍值 + 第一個可能的值);
因為Math.random()總的返回一個小數值,用這個小數值乘以以個整數,然后再加上一個整數,結果仍然為一個小數。上面公式中用到了 Math.floor() 方法,將小數向下取整,取得我們需要的隨機整數值。
舉2個例子,我們需要取得1 ~ 10 的隨機整數:
var randomNum = Math.floor(Math.random() * 10 + 1 );
console.log(randomNum); //介於1和10之間的隨機數(包括1和10)。總共有10個值的可能(1~10),而第一個可能的值是1.。如果是2到10 的數,就是
var randomNum = Math.floor(Math.random() * 9 + 2 );
console.log(randomNum); //介於2和9之間的隨機數(包括2和9)。從2到10總共有9個數,而第一個可能的值是2。
根據以上方法,抽離出一個比較通用的函數:
function randomNum(lowerValue,upperValue){
var choices = upperValue - lowerValue + 1;
var num = Math.floor(Math.random() * choices + lowerValue );
return num;
}
函數randomNum()接受兩個參數,應該返回的最小值和最大值,而最大值減去最小值再加1得到的是可能值總數,然后就套用前面的公式。前面的兩個例子分別可以使用函數,如下:
randomNum(1,10); //介於1和10之間的隨機數(包括1和10)
randomNum(2,9); //介於2和9之間的隨機數(包括2和9)