封装函数前需要了解两个内置函数
Math.floor() // 向下取整,例如Math.floor(1.9)输出为1
Math.random() //输出[ 0,1 ) 左闭右开,之间的随机数
如何生成0-10的随机整数呢?
Math.floor(Math.random() * (10 + 1))
想一想为什么要乘上(10+1)?因为Math.random() * 10 只能取到[0,9) 之间的数,所以要乘上(10+1),Math.floor()的作用是取整数,这样就能的到[0,10]的随机整数了。
如何生成5-10的随机整数?
Math.floor(Math.random() * (5 + 1)) + 5 //其实同理可得到
由此我们可以得到一个获取a-b之间整数的通项公式
Math.floor(Math.random()*(b - a + 1)) + a
转换成代码如下
function getRandomNum(a,b){
let num = Math.floor(Math.random()*(b-a+1))+a
return num
}
可是还有一个问题,如果使用者不小心将大值写在前面,例如getRandomNum(12,0),那么是不是就会出错?我们再加一个纠错功能,可以使用if语句,添加纠错,这样不管大值在前还是在后,都能正常运行,不影响功能。完整代码如下
function getRandomNum(a, b) {
if(a>b){ // 用if语句可以纠正大值写在前面的错误
let temp=a
a=b
b=temp
}
num = Math.floor(Math.random() * (b - a + 1))+ a
return num
}