原理分析
-
Math.random()生成[0,1)的数
-
Math.random() * max 生成[0*max,1*max)的数
即,生成[0,max)的数
-
Math.random() * (max-min) 生成[0,max-min)的数
-
Math.random() * (max-min+1) 生成[0,max-min+1)的数
-
Math.random() * (max-min+1) + min 生成[0+min,max-min+1+min)的数
即,随机数生成范围:[min,max+1)–》[min,max]
代码
- 如果没有参数,默认生成一个4位的随机数
- 如果只有一个参数,生成一个minNum位的随机数
- 如果两个参数,生成一个[minNum,maxNum]的随机数
- 如果参数大于2个,生成一个[minNum,maxNum]的随机数
//生成从minNum到maxNum的随机数
//Math.random()生成[0,1)的数,
//所以,Math.random()*5生成[0,5)的数。
function getRandomNum(minNum,maxNum) {
//判断传入参数的个数
switch(arguments.length){
//如果没有参数,默认生成一个4位的随机数
case 0:
//Math.random()生成[0,1)的数
//Math.random() * 10000 生成[0,10000)的数。
//Math.random() * 9000 生成[0,9000)的数。
//Math.random() * 9000 + 1000 生成[0+1000,9000+1000)的数。
//即,随机数生成范围:[0,10000)
return Math.floor(Math.random() * 9000 + 1000);
break;
//如果只有一个参数,生成一个minNum位的随机数
case 1:
//pow(x,y):返回 x 的 y 次幂。
//如果minNum是3
var min=Math.pow(10,(minNum-1));//最小值 10的2次幂 100
var max=Math.pow(10,minNum);//最大值 10的3次幂 1000
//Math.random()生成[0,1)的数
//Math.random() * max 生成[0,max)的数
//Math.random() * (max-min) 生成[0,max-min)的数
//Math.random() * (max-min+1) 生成[0,max-min+1)的数
//Math.random() * (max-min+1) + min 生成[0+min,max-min+1+min)的数
//即,随机数生成范围:[min,max+1)--》[min,max]
return Math.floor(Math.random() * (max-min+1) + min);
break;
//如果两个参数,生成一个[minNum,maxNum]的随机数
case 2:
return Math.floor(Math.random() * (maxNum-minNum+1) + minNum);
break;
//如果参数大于2个,生成一个[minNum,maxNum]的随机数
default:
return Math.floor(Math.random() * (maxNum-minNum+1) + minNum);
break;
}
}