推荐答案
Math.random()
方法返回一个浮点, 伪随机数,范围在 [0, 1) 之间,包含 0 但不包含 1。
生成指定范围 [min, max]
的随机整数(包含 min
和 max
):
-- -------------------- ---- ------- -------- ----------------- ---- - --- - --------------- --- - ---------------- ------ ------------------------ - ---- - --- - --- - ---- - -- -- ----- ------------- - --------------- ---- -- -- - - -- --- - - --- ------- ---------------------------
本题详细解读
Math.random() 的基本作用
Math.random()
是 JavaScript 中 Math
对象的一个静态方法。它不接受任何参数,并且每次调用都会返回一个新的伪随机数。这个数是 0
(包含) 到 1
(不包含) 之间的浮点数,例如 0.123456
, 0.987654
, 0.000001
。由于它是伪随机的,所以每次运行都可能会得到不同的值,但从统计意义上讲,这些值是均匀分布的。
生成指定范围的随机整数
要生成指定范围 [min, max]
内的随机整数,我们需要进行一些数学运算:
- 扩大范围: 首先,我们使用
Math.random() * (max - min + 1)
来将Math.random()
产生的 [0, 1) 范围扩大到 [0, max - min + 1)。 例如,如果要生成 5 到 10 之间的随机数,max - min + 1
就是 6, 范围就会变成 [0, 6)。 - 向下取整: 使用
Math.floor()
函数来向下取整,这将把浮点数变为不大于该数的最大整数。此时范围变为[0, max - min]
之间的整数。 例如,Math.floor(5.9)
结果为5
。 - 平移范围: 最后,我们加上
min
值,将范围从[0, max - min]
平移到[min, max]
。例如, 如果要生成 5 到 10 之间的随机数, 加上 5 之后,范围就从[0, 5]
变成了[5, 10]
。
代码解释
function getRandomInt(min, max) { min = Math.ceil(min); // 确保 min 为整数 max = Math.floor(max); // 确保 max 为整数 return Math.floor(Math.random() * (max - min + 1)) + min; }
Math.ceil(min)
: 将min
向上取整,确保min
是一个整数。例如,Math.ceil(4.2)
结果是 5。Math.floor(max)
: 将max
向下取整,确保max
是一个整数。例如,Math.floor(4.8)
结果是 4。Math.random() * (max - min + 1)
: 生成 0 (包含) 到max - min + 1
(不包含) 之间的随机浮点数。Math.floor(...)
: 将上述浮点数向下取整,得到一个 0 到max-min
之间的随机整数。... + min
: 将结果加上min
,将范围从0~max-min
调整为min~max
,最终得到一个min
到max
(包含min
和max
) 之间的随机整数。