我研究JavaScript并想要了解有关生成随机整数的一些信息。我在google
和stackoverflow
中查找它,并且大多数代码都是这样的(如果我们想要1到52之间的数字):
var randInt=function(){
number=Math.floor(Math.random()*52+1);
};
和
var randNumMin = 1;
var randNumMax = 52;
var randInt = function (){
number = (Math.floor(Math.random() * (randNumMax - randNumMin + 1)) + randNumMin);
};
我阅读了一些关于Math.random
的引用,发现它正在生成从0
到1
的数字。如果Math.random
生成1
,我们会得到数字5
,这意味着我们会收到错误。我同意这是非常罕见的情况,但它是可能的。我略微修改了代码以避免该错误(在我们的例子中生成数字53
)。在这里,我认为是JavaScript中生成随机数的正确代码。在您的示例中,它只生成整数,但我认为可以修改代码并生成任何类型的数字:
var randInt = function(){
number = Math.floor(Math.random()*52+1);
if (number === 53){
randInt();
}
};
和
var randNumMin = 1;
var randNumMax = 52;
var randInt = function (){
number = (Math.floor(Math.random() * (randNumMax - randNumMin + 1)) + randNumMin);
if (number===53){
randInt();
}
};
我是JavaScript的新手,听听JavaScript专业人士的一些想法会很有趣。提前谢谢。
答案 0 :(得分:11)
Math.random()
函数生成随机数x
,其中0 <= x < 1
。所以它永远不会生成完全 1,尽管它可能非常接近。
来自the documentation for random
:
返回
[0, 1)
范围内的浮点伪随机数,从0(包括)到最大但不包括1(不包括),然后可以缩放到所需范围。< / p>
答案 1 :(得分:2)
只需取你的第一个代码示例,然后从52中减去一个。通用公式为:
random number between X and Y = (Y - X) * Math.random() + X
或整数,
Math.round((Y - X)* Math.random()+ X)
或更准确(正如@Guffa指出的那样),
Math.floor((Y-(X-1)) * Math.random() + X)
答案 2 :(得分:0)
你不需要使用地板,因为它会减少结果。
只需使用round
Math.round(的Math.random(51))+ 1P>