理解math.floor(math.random() * (max - min + 1)) + min

Math.random()函数是返回一个浮点数,  伪随机数在范围从0到小于1;

Math.floor()返回小于或等于一个给定数字的最大整数。

console.log(Math.random());
console.log(Math.floor(Math.random()));

 我们可以通过查看网页控制台以下结果, console.log(Math.floor(Math.random()))我们只能取到唯一整数0,而1是取不到的。

如何取到1?我们可以试着将Math.random乘2看看...

console.log(Math.floor(Math.random() * 2));

此时我们的取值区间变成了[0,1.9999...),说明了我们有机会取值为0和1,可能取值的数值变成了(0,1),因为乘于2让区间范围扩大了两倍

 我们再试着乘于3看看

console.log(Math.floor(Math.random() * 3));

此时我们的取值区间变成了[0,2.9999...),可能取值的个数变成了(0,1,2),这让我们可以发现乘于多少就可能取值的个数就变为多少个,我们可以将原先的Math.random()理解成Math.random()*1 

接下来我们可以看看取的随机数范围是3到7,则生成的随机数可能为3,4,5,6,7一共五个,按照我们的理解要随机生成的数有5个可能取值那就是Math.random()*5,则我们可以写成Math.random()*(7-3+1) 

console.log(Math.floor(Math.random() * (7 - 3 + 1)));

 此时我们可以看到可能取值数为0,1,2,3,4

那我们在这里就可以理解了给出的公式Math.random() * (max - min + 1)为什么要加1的意思了吧

/此时我们想要生成的随机数可能取值为3,4,5,6,7,而我们只乘于5时最小生成的随机数为0,那么我们所想要的最小生成的随机数为3,那么只需要加上3即可Math.random()*(7-3+1)+3

则要求在取值范围为[min,max]之间生成的随机数写法可以写成

Math.floor(Math.random() * (max - min + 1)) + min

 也就是我们MDN文档里面对Math.random()页面的示例扩展:求一个两个数之间的随机整数,包括两个数在内

理解完这个应该其它那几个自己琢磨一下应该也会很好理解的

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值