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)