首先定义一个最小值min和一个最大值max,然后使用公式
Math.floor(Math.random() * (max - min + 1)) + min);
对于不理解原理的,可以参考下面的例子:
我们知道Math.random()返回范围为[0,1)的值,包括0,但不包括1。可以将其视为0到0.999999的范围…
现在,将结果传递给Math.floor()函数。
Math.floor(Math.random());
因为floor将截断小数点并返回整数部分,所以我们总是在这里得到0。
我们只能从中得到1个整数0,但如果我们乘以2,我们可以得到2个数字0、1,,
0 to 0.99999... -> 0
1 to 1.99999... -> 1
通常,将Math.random()乘以任何值就是可以生成多少个整数。
现在,我们可以开始推导公式,我将使用一个特定的示例来提供帮助。
假设我们要生成4到8(包含8)之间的数字,将它们一 一列出为4、5、6、7、8。
但是max - min得到4,只能生成4个整数,如果您希望包含数字8,则必须始终加1。这使表达式中 随机数乘以(max - min + 1)取整后的范围如下:
0、1、2、3、4 //我们拥有的 Math.random() * (max - min + 1)
4、5、6、7、8 //我们想要的 ( )+min