Math.floor(Math.random())+1实际上做了什么?

时间:2012-06-27 14:07:43

标签: javascript

如果你Math.floor(Math.random()*10)+1它应该根据我的理解选择1-10之间的随机数。

但是,当我将+1更改为高于或低于1的任何数字时,我得到相同的结果。为什么是这样? +1到底意味着什么?

4 个答案:

答案 0 :(得分:9)

随机数发生器产生的值在0.0 <= n <0的范围内。 1.0。如果您想要一个介于1和之间的数字,则需要应用+1偏移量。

通常你可以使用:

Math.floor(Math.random() * N) + M

这将生成M和M + N - 1之间的值。

<强> demo Fiddle

答案 1 :(得分:3)

Math.random()生成0到1之间的随机数。

因此Math.random()*10生成0到10之间的随机数,(Math.random()*10)+1生成1到11之间的数字。

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

您可以看到逻辑here

的连续进展

答案 2 :(得分:2)

整数介于1到10之间

  • Math.random()生成介于0和1之间的数字(带有许多小数位)。

等: math.random()[随机返回:0.19157057767733932]
此数字仍有许多小数位

要获得随机整数,您需要将随机生成的数乘以10。

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

  • 由于数字仍然有很多小数位,使用 floor()方法来舍入一个数字向下/最接近的整数,这将给出0到9之间的ua值。然后,你可以添加1使它成为1到10之间的数字。

等:
math.floor(0.6)[return 0]
math.floor(0.6)+ 1 [return 1]

答案 3 :(得分:0)

基本:

(random() >= 0)始终true

(random() < 1)始终true

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

最大:

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

(Math.floor(random() * 10) < 10)始终true

最小

(Math.floor(random() * 10) + 1 >= 1)始终true

(Math.floor(random() * 10) + 1 < 11)始终true

Max Round:

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

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