JavaScript 随机数——如何在 JS 中生成随机数
在使用 JavaScript 程序时,有时你可能需要生成一个随机数。
例如,你可能希望在开发 JavaScript 游戏(例如猜数字游戏)时生成一个随机数。
JavaScript 有许多用于处理数字和执行数学计算的内置方法。其中一种方法是 Math.random()
方法。
在本文中,你将学习如何使用 Math.random()
方法来检索随机数。
以下是我们将介绍的内容:
Math
对象简介Math.random()
语法分解- 如何生成具有指定
max
值的随机小数 - 如何生成具有指定
min
和max
范围的随机小数 - 如何生成具有指定
max
值的随机整数 - 如何生成具有(并包含)指定
max
值的随机整数 - 如何生成具有指定
min
和max
范围的随机整数
如何在 JavaScript 中使用 Math——Math 对象简介
JavaScript 有内置的静态对象 Math
,它允许你执行数学计算和运算。
Math
对象有一些内置方法,可以更准确地执行这些操作。
Math
对象方法的一般语法如下:
Math.methodName(number);
一些最流行的方法是:
Math.round()
Math.ceil()
Math.floor()
Math.random()
让我们看一些如何实现这些方法的示例。
如果要将数字四舍五入到最接近的整数,请使用 Math.round()
方法:
console.log(Math.round(6.2)); // 6
console.log(Math.round(6.3)); // 6
console.log(Math.round(6.5)); // 7
console.log(Math.round(6.8)); // 7
如果要将数字向上舍入到最接近的整数,请使用 Math.ceil()
方法:
console.log(Math.ceil(6.2)); // 7
console.log(Math.ceil(6.3)); // 7
console.log(Math.ceil(6.5)); // 7
console.log(Math.ceil(6.8)); // 7
如果要将数字向下舍入到最接近的整数,请使用 Math.floor()
方法:
console.log(Math.floor(6.2)); // 6
console.log(Math.floor(6.3)); // 6
console.log(Math.floor(6.5)); // 6
console.log(Math.floor(6.8)); // 6
如果要生成随机数,请使用 Math.random()
方法:
console.log(Math.random());
// 你不会得到相同的输出
// 第一次运行程序:
// 0.4928793139100267
// 第二次运行程序:
// 0.5420802533292215
// 第三次运行程序:
// 0.5479835477696466
JavaScript 中的 Math.random() 方法是什么
Math.random()
方法的语法如下:
Math.random();
该方法不带任何参数。
默认情况下,该方法返回一个介于 0
和 1
之间的随机小数(或浮点数)值。
需要注意的是,0
包含在内,而 1
不包含在内。
因此,它将返回一个大于或等于 0
且始终小于且从不等于 1
的值。
如何在 JavaScript 中使用 Math.random() 生成具有指定 max 的随机小数
如你目前所见,默认情况下,Math.random()
生成的数字很小。
如果你想生成一个从 0
开始并包含 0
并且也大于 1
的随机十进制数怎么办?为此,指定一个最大的数。
具体来说,你需要将此最大数与来自 Math.random()
的随机数相乘。
例如,如果要生成 0
到 10
之间的随机数,可以执行以下操作:
console.log(Math.random() * 10);
// 你不会得到相同的输出
//9.495628210218175
在上面的示例中,我将作为限制的最大数(10
)与 Math.random()
的结果数相乘。
请记住,在这种情况下,随机数将介于 0
和 10
之间——这意味着大于或等于 0
且小于且永远不会等于 10
。
如何在 JavaScript 中使用 Math.random() 生成具有指定 min 和 max 范围的随机小数
如果你想在指定的数字范围内生成一个随机十进制数怎么办?
你在上一节中看到了如何指定最大值,但是如果你不希望范围从 0
开始(这是默认的起始范围),怎么办?为此,你还可以指定一个最小值。
在两个值(或范围)之间生成小数的语法是这样的:
Math.random() * (max - min) + min;
我们来看下面的例子:
// 指定最小值 - 范围开始的位置
let min = 20.4;
// 指定最大值 - 范围将在哪里结束
let max = 29.8;
我创建了两个变量,min
和 max
——其中 min
将是范围内的最小数字,而 max
将是最大的数字。
接下来,我使用你之前看到的语法在该范围内生成一个随机数:
let min = 20.4;
let max = 29.8;
let randomNum = Math.random() * (max - min) + min;
console.log(randomNum);
// 你不会得到相同的输出
// 23.309418058783486
这里需要注意的是 min
包含在内,因此随机数将大于或等于 20.4
,而 max
不包含在内,因此结果将始终是小于且永远不会等于 29.8
的数字。
如何在 JavaScript 中使用 Math.random() 生成具有指定 max 的随机整数
到目前为止,你已经了解了如何生成随机十进制数。
也就是说,有一种方法可以使用 Math.random()
生成随机整数。
你需要将 Math.random()
计算的结果传递给之前看到的 Math.floor()
方法。
语法如下:
Math.floor(Math.random());
Math.floor()
方法会将随机十进制数四舍五入到最接近的整数。
最重要的是,你可以指定最大数。
因此,例如,如果你想生成一个介于 0
和 10
之间的随机数,你可以执行以下操作:
console.log(Math.floor(Math.random() * 10));
// 你不会得到相同的输出
// 0
在此示例中,我将最大数(在本例中为 10
)与 Math.random()
的结果相乘,并将此计算的结果传递给 Math.floor()
。
这里需要注意的是,随机数将介于 0
(含)和 10
(不含)之间。因此,数字可以大于或等于 0
,并且小于且永远不等于 10
。
如何在 JavaScript 中使用 Math.random() 生成具有(并包含)指定 max 的随机整数
在上一节的示例中,我生成了一个介于数字 0
(含)和 10
(不含)之间的随机数。
到目前为止,你已经看到无法生成等于指定最大值的随机数。
如果要生成包含指定最大值的随机数怎么办?
解决这个问题的方法是在计算过程中加 1
。
所以,让我们重温上一节的代码:
console.log(Math.floor(Math.random() * 10));
你现在将重新编写代码,如下所示:
console.log(Math.floor(Math.random() * 10) + 1);
// 你不会得到相同的输出
// 10
这里需要注意的是,这段代码会生成一个介于 1
(不是 0
)和 10
之间的随机整数——包括 10
。
如何在 JavaScript 中使用 Math.random() 生成具有指定 min 和 max(包含)范围的随机整数
到目前为止,你已经了解了如何生成具有指定最大值的随机整数。
正如你在上面的示例中看到的,使最大数字包含在内的代码使用数字 1
作为起始数字,而不是 0
。
也就是说,有一种方法可以让你指定一个包含的数字范围。为此,你需要指定 min
和 max
。
在上一节中,你看到了如何在指定范围内生成随机数,代码类似。唯一的变化是你将结果传递给 Math.floor()
方法以将小数四舍五入到最接近的整数。
代码如下:
Math.floor(Math.random() * (max - min) + min);
要使该范围包含在内,你将执行以下操作:
console.log(Math.floor(Math.random() * (max - min + 1)) + min);
因此,要生成数字 0
(含)和 10
(含)之间的随机数,你可以编写以下代码:
let min = 0;
let max = 10;
console.log(Math.floor(Math.random() * (max - min + 1)) + min);
//你不会得到相同的输出
// 0
总结
好啦,你现在知道了 Math.random()
方法的工作原理以及如何使用它的一些方法。