在使用JavaScript程序时,有时可能需要生成一个随机数。
例如,在开发一个JavaScript游戏时,你可能想生成一个随机数,比如猜数字游戏。
JavaScript有许多内置的方法来处理数字和进行数学计算。其中一个方法是Math.random() 方法。
在这篇文章中,你将学习如何使用Math.random() 方法来检索随机数。
如何在JavaScript中使用数学--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());
// You will not get the same output
//first time running the program:
// 0.4928793139100267
//second time running the program:
// 0.5420802533292215
// third time running the program:
// 0.5479835477696466
什么是JavaScript中的Math.random() 方法?- 语法分解
Math.random() 方法的语法如下:
Math.random();
该方法不接受任何参数。
默认情况下,该方法返回一个介于0 和1 之间的**随机十进制(或浮点)**数字。
需要注意的是,0 是包容的,而1 是不包容的。
因此,它将返回一个大于或等于0 的值,而总是小于或不等于1 。
如何在JavaScript中使用Math.random() ,生成一个具有指定的max 限制的随机小数
正如你到目前为止所看到的,在默认情况下,Math.random() 生成的数字是很小的。
如果你想生成一个从0 开始并包括在内的随机小数,并且大于 1 呢?为此,你要指定一个最大的数字。
具体来说,你需要将这个max 的数字与Math.random() 的随机数字相乘。
例如,如果你想生成一个介于0 和10 之间的随机数,你要做以下工作:
console.log(Math.random() * 10);
// You won't get the same output
//9.495628210218175
在上面的例子中,我将max 的数字(10)与Math.random() 的数字相乘,这将作为一个限制。
请记住,在这种情况下,随机数将在0 和10 之间 - 这意味着大于或等于0 ,小于或不等于10 。
如何使用JavaScript中的Math.random() ,在指定的min 和max 范围内生成一个随机小数?
如果你想在你指定的数字范围内生成一个随机的小数,怎么办?
你在上一节看到了如何指定一个max ,但是如果你不希望这个范围从0 (这是默认的起始范围)开始呢?要做到这一点,你也可以指定一个min 。
在两个值(或范围)之间生成小数的一般语法看起来与此类似:
Math.random() * (max - min) + min;
让我们来看看下面的例子:
// specify a minimum - where the range will start
let min = 20.4;
// specify a maximum - where the range will end
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);
// You won't get the same output
// 23.309418058783486
这里需要注意的是,min 是包容的,所以随机数将大于或等于20.4 ,而max 不是包容的,所以结果将总是一个小于或不等于29.8 的数字。
如何在JavaScript中使用Math.random() ,生成一个具有指定的max 限制的随机整数
到目前为止,你已经看到了如何生成随机的十进制数字。
也就是说,还有一种方法可以使用Math.random() 来生成随机整数。
你将需要把Math.random() 的计算结果传递给你之前看到的Math.floor() 方法。
这方面的一般语法如下:
Math.floor(Math.random());
Math.floor() 方法将把随机的小数四舍五入到最接近的整数(或整数)。
在此基础上,你可以指定一个max 数字。
因此,举例来说,如果你想生成一个介于0 和10 之间的随机数,你可以这样做:
console.log(Math.floor(Math.random() * 10));
// You won't get the same output
// 0
在这个例子中,我把max 的数字(在这个例子中是10 )与Math.random() 的结果相乘,然后把这个计算结果传给Math.floor() 。
这里需要注意的是,随机数将在0 (含)和10 (不含)之间。因此,这些数字可以大于或等于0 ,小于或不等于10 。
如何在JavaScript中使用Math.random() ,生成一个具有指定的max 包容限制的随机整数
在上一节的例子中,我生成了一个介于数字0 (包容)和10 (排斥)之间的随机数。
到目前为止,你已经看到,你不能生成一个等于指定的max 的随机数。
如果你想生成一个包括指定的最大值的随机数呢?
解决这个问题的方法是在计算过程中加入1 。
所以,让我们重温一下上一节的代码:
console.log(Math.floor(Math.random() * 10));
你现在可以这样重写代码:
console.log(Math.floor(Math.random() * 10) + 1);
// You will not get the same output
// 10
这里需要注意的是,这段代码将在1 (不是0 )和10 之间生成一个随机整数,包括10 。
如何使用JavaScript中的Math.random() ,在指定的min 和max 范围内生成一个随机整数
到目前为止,你已经看到了如何生成一个具有你指定的包容性max 的随机整数。
正如你在上面的例子中看到的,使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);
//You will not get the same output
// 0
结论
这就是你的成果!你现在知道了Math.random() 方法是如何工作的,以及你可以使用它的一些方法。
要学习更多关于JavaScript的知识,请前往freeCodeCamp的JavaScript算法和数据结构认证。
这是一个免费的、经过深思熟虑的、结构化的课程,你将在其中进行互动学习。最后,你还将建立5个项目来申请你的认证并巩固你的知识。
谢谢你的阅读!