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() 方法的工作原理以及如何使用它的一些方法。