6

当您Math.floor(Math.random()*10)+1应该根据我的理解选择1-10之间的随机数时。

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

4

4 回答 4

9

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

一般可以使用:

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

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

演示小提琴

于 2012-06-27T14:11:13.810 回答
3

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

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

Math.floor()去掉这个数字的小数,并使它成为一个从 0 到 10 的整数。

您可以在此处查看逻辑的顺序进展

于 2012-06-27T14:10:07.480 回答
3

整数在 1 到 10 之间

  • Math.random()生成 0 到 1 之间的数字(有很多小数位)。

等:math.random() [随机返回:0.19157057767733932]
这个数字仍然有很多小数位

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

etc
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]

于 2016-02-07T19:02:55.393 回答
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

最大回合:

(Math.round(random() * 10, 0) >= 0)总是true

(Math.round(random() * 10, 0) <= 10)总是true

于 2013-10-17T14:35:03.873 回答