Javascript Math.floor(Math.random())什么是+;我真的做了什么?

Javascript Math.floor(Math.random())什么是+;我真的做了什么?,javascript,Javascript,当你有Math.floor(Math.random()*10)+1时,它应该从我理解的数字中选择一个介于1-10之间的随机数 但是,当我将+1更改为高于或低于1的任何数字时,我会得到相同的结果。为什么会这样?+1的确切含义是什么?Math.random()生成一个介于0和1之间的随机数 因此,Math.random()*10生成一个介于0和10之间的随机数,(Math.random()*10)+1生成一个介于1和11之间的数 Math.floor()删除该数字的小数点,使其成为0到10之间的整数

当你有
Math.floor(Math.random()*10)+1
时,它应该从我理解的数字中选择一个介于1-10之间的随机数

但是,当我将
+1
更改为高于或低于
1
的任何数字时,我会得到相同的结果。为什么会这样?
+1
的确切含义是什么?

Math.random()
生成一个介于0和1之间的随机数

因此,
Math.random()*10
生成一个介于0和10之间的随机数,
(Math.random()*10)+1
生成一个介于1和11之间的数

Math.floor()
删除该数字的小数点,使其成为0到10之间的整数


您可以看到逻辑的顺序排列

随机数生成器生成的值范围为0.0基本:

(random()>=0)
始终
true

(random()<1)
始终
true

(Math.floor(random())==0)
始终
true

最大值:

(数学地板(random()*10)>=0)
始终
true

(数学地板(随机()*10)<10)
始终
true

最低要求:

(数学地板(random()*10)+1>=1)
始终
true

(数学地板(随机()*10)+1<11)
始终
true

最大轮数:

(Math.round(random()*10,0)>=0)
始终
true


(Math.round(random()*10,0)整数在1到10之间

  • Math.random()生成0到1之间的数字(有许多小数位)
等等: math.random()[随机返回:0.1915705777733932]
(此数字仍有许多小数位)

要得到一个随机整数,您需要将随机生成的数字乘以10

etc
math.random()*10=[随机返回:2.9757621488533914]

  • 由于该数字仍有许多小数位,请使用floor()方法将数字向下舍入/最接近的整数,这将为您提供一个介于0和9之间的值。然后,您可以将1相加,使其成为介于1和10之间的数字
等:
数学地板(0.6)[返回0]

数学。下限(0.6)+1[返回1]

如果你添加了比
+1
更多的内容,结果仍然是1-10之间的数字,那么这是非常错误的。你所说的“相同结果”到底是什么意思?你能澄清或发布一些输出吗?(澄清一下——如果你总是并且只得到1-10之间的数字。显然,任何给定的运行可能只产生1-10,但随着时间的推移,几乎肯定不会出现这种情况。)“当我更改+1时,我得到相同的结果。”这个问题基于一个错误的前提。我想你知道添加
1
有什么作用,但你的代码中还有一些其他问题。如果你有这样的问题,请发布你的实际代码。@DaveNewton:
Math.random()
也可以生成
0.9999…
。确切地说,
Math.random()
生成一个介于(包括)0和(不包括)1.为了验证,我运行了
Math.random()
四次。它不仅清楚地表明可以获得高于
0.9的浮点值,而且还表明您可以:0.9491507810734872/0.9815085749153463/0.7040373403047864/0.9940599762680827。相应地,更新了答案。是的,但这是真正的“随机”吗!0.9940599762680827是0.9以上的浮点数,否?@jacktheripper取决于你的定义以及你是否能预测量子力学的结果。不完全正确:由于
Math.floor
its介于M和M+N-1之间。你需要
Math.round
使数字介于M和M+N之间。然而,在这种情况下,分布并不相等,因为M和M+N只有一半的翻滚机会。你是对的。我说的“介于”是指“最多但不包括”,这是谷歌在这篇文章中发现的M@Christoph中的技术值。直到我读了你的评论,我才完全理解
Math.floor((Math.random()*N)+M)
的工作原理。谢谢!
Math.floor(Math.random() * N) + M