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

Nea*_*ear 6 javascript

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

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

tad*_*man 9

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

一般你可以使用:

Math.floor(Math.random() * N) + M
Run Code Online (Sandbox Code Playgroud)

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

演示小提琴

  • 不完全正确:由于`Math.floor`在M和M + N-1之间.你需要`Math.round`在M和M + N之间有数字.然而,在这种情况下,分布不相等,因为M和M + N只有一半的滚动机会. (3认同)