生成指定范围内的随机整数
- 2021-1-18
- web javascript
首先来看一下 Math.random 吧,它随机生成一个 0 (包含) ~ 1 (不包含) 之间的浮点数。
基于此,我们可以实现一个函数来生成指定范围内的随机整数(MDN上的例子):
1 | // 用于理解版 |
技巧是 range 多加个1,然后再用 Math.floor 给向下取整。unit * range + offset 随机生成的是一个包含最小值但不包含最大值+1的浮点数,再向下取整就是一个既包含最小值又包含最大值的整数了,可谓是非常巧妙了。
这样生成的随机整数各整数被生成到的概率也是相等的,我们做个测试:
1 | const probabilities = Array(11).fill(0); |
每个整数被生成到的概率都是10万左右,所以通过这种方式生成的随机整数也是等概率随机生成。