随机数Math.floor(Math.random() * (max - min + 1)) + min的含义

今天学习了freecodecamp网站里JavaScript生成某个范围内的随机整数。

1、首先要清楚:

1.max:最大值

2.min:最小值

3.Math.floor():向下取整(如 Math.floor(8.7)结果为8)

4.Math.random():生成一个0~1的随机小数包括0,但不包括1.

2、拆分:

1.首先通过Math.random()获取一个0~1随机小数(包括0,不包括1)

2.max-min意思就是通过最大值和最小值相减获取最大值和最小值的区间

3.那么max-min需要+1再乘以Math.random()呢?因为Math.random()的范围不包括1,如果不+1,假设max=5,min=3,那么 (5-3)*0.9999...只能无限接近2,一旦通过Math.floor()进行向下取整,值便会等于1,但是我们要的区间范围是多少? 是2,那么+1呢?会不会大于2?很明显,(5-3+1)*0.99999只会无线接近3,最终向下取整结果为2,所以max-min+1就会得到我们需要的区间范围。

4.我们知道了区间范围,最后通过+min,把区间范围锁定在max~min之间,即Math.random()获取到的随机数为0时,得到最小值,最小值就是min。

留下一个问题:理论上能随机到max值吗?

萌新一个,有错指出必更正。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值