在不以零开头的范围内生成随机整数

20

我该如何生成7到10之间的数字?目前我只能生成0到10之间的数字:

Math.floor(Math.random()*11)

2
之前已经被问了很多次... - Mitch Wheat
6
你想要的是数字 7,而你可以生成的是数字 0,它们之间的差距是多少? - S.Lott
我读了越来越多S.Lott的评论,特别是深夜的那些,就越喜欢他。 - Jordan
4个回答

67
function getRandom(min, max) {
    return min + Math.floor(Math.random() * (max - min + 1));
}

for(var x = 0; x < 5; x++) {
    console.log(getRandom(7, 10));
}

10
将其变为基于min和max的通用函数,给你一个赞。 - jfriend00
将随机数乘以(max-min)并不能得到所需的范围。在这里,最小值需要是类似于“mx+b”中的“b”那样的东西。 - NullVoxPopuli
@NullVoxPopuli,你试过了吗?到目前为止有43个满意的客户,我刚刚检查了它的分布范围,看起来没问题。这是一个fiddle链接:http://jsfiddle.net/UCX9c/1/ - Jordan
哦,嘿,我没有看到那个min在开头。哈哈,我以为你只是在做random() * max-min的随机数。 - NullVoxPopuli
啊,明白了。在一个范围内想到一个随机数,看作一条线的斜率,这个想法很有意思。我倾向于把它看作一个集合。虽然这是个酷炫的心理技巧,但我相信数学家会嘲笑我的。 - Jordan

22

Math.floor(7 + Math.random() * 4)将生成从7到10(包括7和10)的数字。


4

只需这样说:

Math.floor(Math.random()*4) + 7

这将生成一个从0到3的随机数,然后加上7,得到7到10之间的数字。

0
7 + Math.floor(Math.random()*4)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接