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()页面的示例扩展:求一个两个数之间的随机整数,包括两个数在内
理解完这个应该其它那几个自己琢磨一下应该也会很好理解的