之前写的一个通过JavaScript取出特定区间的随机数,里面有一个公式,已经忘了逻辑。
文章是这个:【代码】JavaScript获取指定区间的随机数
Google一搜,连方程都出来了,这让我数学不好的人情何以堪>_<
这篇文章,我将从另一个非常直观的角度,来解析这个公式。
===========================
公式是这样的:
Math.floor(Math.random()* (max - min + 1) + min)
我们一步步来分析:
为了方便理解,我们先假设 max=10 min=5
学过小学数学的都知道,先算乘除,后算加减,有括号的先算括号。
把值带入公式可得 Math.random()* (10 - 5 + 1);
我们把它看成一个数轴,我们现在要取出,他们之间差值的随机数,你这么想,我要取出5-10的随机数,是不是这中间只有5种可能,8-10的随机数,是不是只有3种可能?
所以,干脆就从0开始,取出他们之间的随机数(原谅我画的难看)
这10-5能理解,是得到了他们之间差值的随机数,但是为什么要+1呢?
这是因为Math.random()*5是获得了大于等于0小于5的值,是小于5啊,就是最大只能4.999999...,这外面还有个floor,直接变4了,就成了0-4的随机数了,显然不符合题意。
好了,+1的问题解决了,我们再说最后的+min,也就是+5是怎么回事。
既然把他们俩的差值算完了,现在假设获得到了3,我们要把它变成>=5 但是 <=10的值。
可以把上面那个选区平移,往右移动5位,也就是+5,结果将得到8。
问题解决,诶嘿~
微信扫码查看本文
发表评论