需求
最近比较无聊随便写了一些简单的需求,如:获取 0~100 的随机整数。虽然不难,但是实践的过程中还是遇到了一些问题,也学到了一些东西,下面让我们一起来实现这个功能
思考与实现
首先我们知道获取随机数的一个方法 Math.random()
,但它是获取 0~1 之间的随机x小数,所以我们可以把这个接口的返回值乘以 100
,然后取整就可以实现我们的需求了,于是最初的代码是这样的:
Math.floor(Math.random() * 100); // 其实取的是 0~99
Math.ceil(Math.random() * 100); // 其实取的是 1~100
其实这两个代码都是错误的,一个只能取 0~99,一个只能取 1~100,没关系,发现问题我们解决问题,再改:
Math.floor(Math.random() * (100 + 1)) // 0~100 OK
Math.round(Math.random() * 100) // 0~100 OK 利用round四舍五入
扩展
现在需求难度加大,要写一个方法,传入两个参数,获取这两个参数之间(包括两个参数)的随机整数:
const random = (min, max) => {
if(isNaN(min) || isNaN(max)) {
console.log('params is NaN');
return null;
} else {
// 下面这两句代码用哪个都可以
// return Math.floor(Math.random() * (max - min + 1) + min);
return Math.round(Math.random() * (max - min) + min);
}
}
random(1,50) // 获取1~50的随机整数
OK,大工告成~~
简书作者 小菜荔枝 转载请联系作者获得授权
网友评论