Math.floor的概念(Math.random()*5 + 1),真正的范围是什么?为什么?

ale*_*.07 6 javascript math

通过将随机数(介于0和1之间)乘以5,我们使其成为0到5之间的随机数(例如,3.1841).Math.floor()将此数字向下舍入为整数,并在末尾添加1将范围从0到4更改为1到5之间(最多包括5).

上面的解释让我很困惑......我的解释如下:

- 添加5给它一个5个数字的范围 - 但它从0开始(像一个数组?) - 所以它在技术上是0 - 4 - 并通过添加一个,你使它1 - 5

我是JS的新手,甚至不知道这里的问题是否合适,但到目前为止这个网站一直都很棒.感谢您的任何帮助!

Jam*_*lly 6

Mozilla开发者网络的文件Math.random():

Math.random()函数返回范围[0,1)中的浮点伪随机数,即从0(包括)到最多但不包括1(不包括).

以下是两个随机生成的数字示例:

Math.random() // 0.011153860716149211
Math.random() // 0.9729151880834252
Run Code Online (Sandbox Code Playgroud)

因此,当我们将随机生成的数字乘以另一个数字时,它的范围从0到最大值1,低于乘以的数字(因为Math.floor()只是删除小数位而不是舍入数字(也就是说,处理时Math.floor(),0.999变为0 ,而不是 1)).

Math.floor(0.011153860716149211 * 5) // 0
Math.floor(0.9729151880834252 * 5)   // 4
Run Code Online (Sandbox Code Playgroud)

添加一个只是将其偏移到您所追求的值:

Math.floor(0.011153860716149211 * 5) + 1 // 1
Math.floor(0.9729151880834252 * 5) + 1   // 5
Run Code Online (Sandbox Code Playgroud)