关于生成随机数的几点思考

vas*_*111 2 javascript random

我研究JavaScript并想要一些关于生成随机整数的信息.我看它在googlestackoverflow和主要被找到这样的代码(在情况下,我们希望数字1到52):

var randInt=function(){
   number=Math.floor(Math.random()*52+1);
};
Run Code Online (Sandbox Code Playgroud)

var randNumMin = 1;
var randNumMax = 52;
var randInt = function (){
   number = (Math.floor(Math.random() * (randNumMax - randNumMin + 1)) + randNumMin);
};
Run Code Online (Sandbox Code Playgroud)

我读到一些参考Math.random,发现它是从生成的数字01.如果Math.random生成1,我们将得到数字5,这意味着我们将得到错误.我同意这是非常罕见的情况,但它是可能的.我略微修改了代码以避免该错误(在我们的例子中生成数字53).在这里,我认为是JavaScript中生成随机数的正确代码.在您的示例中,它只生成整数,但我认为可以修改代码并生成任何类型的数字:

var randInt = function(){
    number = Math.floor(Math.random()*52+1);
    if (number === 53){
       randInt();
    }
};
Run Code Online (Sandbox Code Playgroud)

var randNumMin = 1;
var randNumMax = 52;
var randInt = function (){
    number = (Math.floor(Math.random() * (randNumMax - randNumMin + 1)) + randNumMin);
    if (number===53){
        randInt();
    }
};
Run Code Online (Sandbox Code Playgroud)

我是JavaScript的新手,听听JavaScript专业人士的一些想法会很有趣.提前致谢.

Gre*_*ill 11

Math.random()函数产生随机数x在那里0 <= x < 1.因此,它绝不会产生正好 1,尽管它可能出现非常接近.

以下文档random:

返回一个浮点伪随机数,范围[0, 1)为0(包括),但不包括1(不包括),然后可以缩放到所需范围.