推荐答案
Math.random() 方法返回一个浮点, 伪随机数,范围在 [0, 1) 之间,包含 0 但不包含 1。
生成指定范围 [min, max] 的随机整数(包含 min 和 max):
// www.javascriptcn.com code example
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
// 示例
const randomInteger = getRandomInt(5, 10); // 生成 5 到 10 (包含 5 和 10) 之间的随机整数
console.log(randomInteger);本题详细解读
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) 之间的随机整数。