在Javascript在特定范围生成随机数
Math.random()
在 0 ( 包含) 和 1 ( 不包含) 之间返回一个 Number
。 因此我们有一个这样的间隔:
[0....................................1)
现在,我们想要一个介于 min
( 包含) 和 max
( 不包含) 之间的数字:
[0.................................... 1) [min.................................max)
但是,首先,我们应该从第二个时间间隔中减去 min
来调整问题:
[0....................................1) [min - min........................... max - min)
这给出了:
[0.................................... 1) [0....................................max - min)
我们现在可以应用 Math.random
,然后计算。 让我们选择一个随机数:
Math.random() | [0.................................... 1) [0.................................... max - min)
因此,我们需要:
x = Math.random() * (max - min);
不要忘记加上 min
,这样我们在[ min,max ) 中得到一个数字:
x = Math.random() * (max - min) + min;
第二个,返回 min
和 max
之间的整数,两者都包含。
现在,为了获得整数,你可以使用 round
,ceil
或者 floor
。
你可以使用 Math.round(Math.random() * (max - min)) + min
但是,有可能我想要的范围是[2, 5) , 然后Math.random() * (max - min) 出来的最大值是4.6, 但是Math.round ( ) 四舍五入就变成了最大值为5。
所以,使用 Math.floor( Math.random()*(max-min) ) + min
转自
http://blog.leanote.com/post/dujuncheng/%E5%9C%A8Javascript%E5%9C%A8%E7%89%B9%E5%AE%9A%E8%8C%83%E5%9B%B4%E7%94%9F%E6%88%90%E9%9A%8F%E6%9C%BA%E6%95%B0%EF%BC%9F