首页 文章

在JavaScript中生成特定范围内的随机整数?

提问于
浏览
1592

如何在Javascript中的两个指定变量之间生成随机整数,例如: x = 4y = 8 将输出4,5,6,7,8中的任何一个?

25 回答

  • 7

    最低和最高之间的随机整数:

    function randomRange(l,h){
      var range = (h-l);
      var random = Math.floor(Math.random()*range);
      if (random === 0){random+=1;}
      return l+random;
    }
    

    不是最优雅的解决方案..但快速 .

  • 3240

    替代解决方案: -

    let makeGuess = function(guess){
        let min = 1;
        let max = 5;   
        let randomNumber = Math.floor(Math.random() * (max - min + 1)) + min
    
        return guess === randomNumber;
    
    }
    console.log(makeGuess(1));
    
  • 474
    function randomRange(min, max) {
      return ~~(Math.random() * (max - min + 1)) + min
    }
    

    如果您使用 Underscore.js 则可以选择使用

    _.random(min, max)
    
  • 3

    其他答案没有考虑 01 的完全合理的参数 . 相反,你应该使用 round ceil ceilfloor

    function randomNumber(minimum, maximum){
        return Math.round( Math.random() * (maximum - minimum) + minimum);
    }
    
    console.log(randomNumber(0,1));  # 0 1 1 0 1 0
    console.log(randomNumber(5,6));  # 5 6 6 5 5 6
    console.log(randomNumber(3,-1)); # 1 3 1 -1 -1 -1
    
  • 3

    对于具有范围的随机整数,请尝试:

    function random(minimum, maximum) {
      var bool = true;
    
      while (bool) {
        var number = (Math.floor(Math.random() * maximum + 1) + minimum);
        if (number > 20) {
          bool = true;
        } else {
          bool = false;
        }
      }
    
      return number;
    }
    
  • 7

    如果您需要0到最大值之间的变量,您可以使用:

    Math.floor(Math.random() *  max);
    
  • 9

    这是javascript中随机类的MS DotNet实现 -

    var Random = (function () {
    function Random(Seed) {
        if (!Seed) {
            Seed = this.milliseconds();
        }
        this.SeedArray = [];
        for (var i = 0; i < 56; i++)
            this.SeedArray.push(0);
        var num = (Seed == -2147483648) ? 2147483647 : Math.abs(Seed);
        var num2 = 161803398 - num;
        this.SeedArray[55] = num2;
        var num3 = 1;
        for (var i_1 = 1; i_1 < 55; i_1++) {
            var num4 = 21 * i_1 % 55;
            this.SeedArray[num4] = num3;
            num3 = num2 - num3;
            if (num3 < 0) {
                num3 += 2147483647;
            }
            num2 = this.SeedArray[num4];
        }
        for (var j = 1; j < 5; j++) {
            for (var k = 1; k < 56; k++) {
                this.SeedArray[k] -= this.SeedArray[1 + (k + 30) % 55];
                if (this.SeedArray[k] < 0) {
                    this.SeedArray[k] += 2147483647;
                }
            }
        }
        this.inext = 0;
        this.inextp = 21;
        Seed = 1;
    }
    Random.prototype.milliseconds = function () {
        var str = new Date().valueOf().toString();
        return parseInt(str.substr(str.length - 6));
    };
    Random.prototype.InternalSample = function () {
        var num = this.inext;
        var num2 = this.inextp;
        if (++num >= 56) {
            num = 1;
        }
        if (++num2 >= 56) {
            num2 = 1;
        }
        var num3 = this.SeedArray[num] - this.SeedArray[num2];
        if (num3 == 2147483647) {
            num3--;
        }
        if (num3 < 0) {
            num3 += 2147483647;
        }
        this.SeedArray[num] = num3;
        this.inext = num;
        this.inextp = num2;
        return num3;
    };
    Random.prototype.Sample = function () {
        return this.InternalSample() * 4.6566128752457969E-10;
    };
    Random.prototype.GetSampleForLargeRange = function () {
        var num = this.InternalSample();
        var flag = this.InternalSample() % 2 == 0;
        if (flag) {
            num = -num;
        }
        var num2 = num;
        num2 += 2147483646.0;
        return num2 / 4294967293.0;
    };
    Random.prototype.Next = function (minValue, maxValue) {
        if (!minValue && !maxValue)
            return this.InternalSample();
        var num = maxValue - minValue;
        if (num <= 2147483647) {
            return parseInt((this.Sample() * num + minValue).toFixed(0));
        }
        return this.GetSampleForLargeRange() * num + minValue;
    };
    Random.prototype.NextDouble = function () {
        return this.Sample();
    };
    Random.prototype.NextBytes = function (buffer) {
        for (var i = 0; i < buffer.length; i++) {
            buffer[i] = this.InternalSample() % 256;
        }
    };
    return Random;
    }());
    

    Use:

    var r = new Random();
            var nextInt = r.Next(1, 100); //returns an integer between range
            var nextDbl = r.NextDouble(); //returns a random decimal
    
  • 3

    这是我对一个范围内的随机数的看法,因为我想得到一个基数到指数范围内的随机数 . 例如base = 10,exponent = 2,理想情况下给出0到100之间的随机数,依此类推 .

    如果它有助于使用它,这里是:

    // get random number within provided base + exponent
    // by Goran Biljetina --> 2012
    
    function isEmpty(value){
        return (typeof value === "undefined" || value === null);
    }
    var numSeq = new Array();
    function add(num,seq){
        var toAdd = new Object();
         toAdd.num = num;
         toAdd.seq = seq;
         numSeq[numSeq.length] = toAdd;
    }
    function fillNumSeq (num,seq){
        var n;
        for(i=0;i<=seq;i++){
            n = Math.pow(num,i);
            add(n,i);
        }
    }
    function getRandNum(base,exp){
        if (isEmpty(base)){
            console.log("Specify value for base parameter");
        }
        if (isEmpty(exp)){
            console.log("Specify value for exponent parameter");
        }
        fillNumSeq(base,exp);
        var emax;
        var eseq;
        var nseed;
        var nspan;
        emax = (numSeq.length);
        eseq = Math.floor(Math.random()*emax)+1;
        nseed = numSeq[eseq].num;
        nspan = Math.floor((Math.random())*(Math.random()*nseed))+1;
        return Math.floor(Math.random()*nspan)+1;
    }
    
    console.log(getRandNum(10,20),numSeq);
    //testing:
    //getRandNum(-10,20);
    //console.log(getRandNum(-10,20),numSeq);
    //console.log(numSeq);
    
  • 86

    下面是一个javascript函数的示例,它可以生成任意指定长度的随机数而不使用Math.random():

    function genRandom(length)
        {
         const t1 = new Date().getMilliseconds();
         var min = "1",max = "9";
         var result;
         var numLength = length;
         if (numLength != 0)
         {
            for (var i = 1; i < numLength; i++)
            {
               min = min.toString() + "0";
               max = max.toString() + "9";
            }
         } 
         else
         {
            min = 0;
            max = 0;
            return; 
         }
    
          for (var i = min; i <= max; i++)
          {
               //Empty Loop
          }
    
          const t2 = new Date().getMilliseconds();
          console.log(t2);
          result = ((max - min)*t1)/t2;
          console.log(result);
          return result;
        }
    
  • 4

    Mozilla Developer Network页面上有一些示例:

    /**
     * Returns a random number between min (inclusive) and max (exclusive)
     */
    function getRandomArbitrary(min, max) {
        return Math.random() * (max - min) + min;
    }
    
    /**
     * Returns a random integer between min (inclusive) and max (inclusive).
     * The value is no lower than min (or the next integer greater than min
     * if min isn't an integer) and no greater than max (or the next integer
     * lower than max if max isn't an integer).
     * Using Math.round() will give you a non-uniform distribution!
     */
    function getRandomInt(min, max) {
        min = Math.ceil(min);
        max = Math.floor(max);
        return Math.floor(Math.random() * (max - min + 1)) + min;
    }
    

    这是它背后的逻辑 . 这是一个简单的三条规则:

    Math.random() 返回介于0(含)和1(独占)之间的 Number . 所以我们有这样的间隔:

    [0 .................................... 1)
    

    现在,我们想要一个介于 min (包括)和 max (独家)之间的数字:

    [0 .................................... 1)
    [min .................................. max)
    

    我们可以使用 Math.random 来获取[min,max]间隔内的通讯记录 . 但是,首先我们应该通过从第二个区间减去 min 来考虑一点问题:

    [0 .................................... 1)
    [min - min ............................ max - min)
    

    这给出了:

    [0 .................................... 1)
    [0 .................................... max - min)
    

    我们现在可以申请 Math.random 然后计算通讯员 . 我们选择一个随机数:

    Math.random()
                        |
    [0 .................................... 1)
    [0 .................................... max - min)
                        |
                        x (what we need)
    

    所以,为了找到 x ,我们会这样做:

    x = Math.random() * (max - min);
    

    不要忘记添加 min ,以便我们在[min,max]间隔中得到一个数字:

    x = Math.random() * (max - min) + min;
    

    这是MDN的第一个功能 . 第二个,返回 minmax 之间的整数,包括两者 .

    现在获取整数,你可以使用 roundceilfloor .

    您可以使用 Math.round(Math.random() * (max - min)) + min ,但这会产生非均匀分布 . 两者, minmax 只有大约一半的翻滚机会:

    min...min+0.5...min+1...min+1.5   ...    max-0.5....max
    └───┬───┘└────────┬───────┘└───── ... ─────┘└───┬──┘   ← Math.round()
       min          min+1                          max
    

    从区间排除 max ,它的滚动机会比 min 更小 .

    使用 Math.floor(Math.random() * (max - min +1)) + min ,您可以获得完美均匀的分布 .

    min.... min+1... min+2 ... max-1... max.... max+1 (is excluded from interval)
    |        |        |         |        |        |
    └───┬───┘└───┬───┘└─── ... ┘└───┬───┘└───┬───┘   ← Math.floor()
       min     min+1               max-1    max
    

    您不能在该等式中使用 ceil()-1 ,因为 max 现在滚动的可能性略小,但您也可以滚动(不需要的) min-1 结果 .

  • 10

    Math.random()

    Mozilla Developer Network文档:

    // Returns a random integer between min (include) and max (include)
    
    Math.floor(Math.random() * (max - min + 1)) + min;
    

    有用的例子:

    // 0 - 10
    Math.floor(Math.random() * 11);
    
    // 1 - 10
    Math.floor(Math.random() * 10) + 1;
    
    // 5 - 20
    Math.floor(Math.random() * 16) + 5;
    
    // -10 - (-2)
    Math.floor(Math.random() * 9) - 10;
    
  • 13

    我想知道经过足够的运行之后的分布将如何用于这样的随机函数 .

    并且还要检查在不同的浏览器中该分布是否大致相同 .

    所以这是一个可以运行的片段 . 按下按钮之前可以更改数字 .

    function getRandomNumberInRange(Min, Max) {
        return Math.floor(Math.random() * (Max - Min + 1)) + Min;
    }
    
    function printDictAsTable(dict){
       let htmlstr = "<table border=1><tr><th>Number</th><th>Count</th></tr>";
       
       let sortedKeys = Object.keys(dict).sort(function(a,b){return a-b});
    
       for (let i=0; i<sortedKeys.length; i++) {
         let key = sortedKeys[i];
         htmlstr += "<tr><td>"+ key +" </td><td>" + dict[key] + " </td></tr>";
       }
       htmlstr += "</table>";
       document.getElementById("tableContainer").innerHTML = htmlstr;
    }
    
    function loopRandomAndPrint(){
        let min = Number(document.getElementById("randomMinLimit").value);
        let max = Number(document.getElementById("randomMaxLimit").value);
        if (max < min){let temp = max; max = min; min = temp;}
        let loopTotal = Number(document.getElementById("loopLimit").value);
        let dict = {};
        
        for(i = min; i <= max; ++i){
            dict[i] = 0;
        }
    
        for(i = 0; i < loopTotal; i++){
            let num = getRandomNumberInRange(min, max);
            dict[num] = dict[num] + 1;
        }
        
        printDictAsTable(dict);
    }
    
    loopRandomAndPrint();
    
    <div id="topContainer">
    <div id="inputAndButton" style="float: left;">
    <p>Min  : <input type="number" id="randomMinLimit" value=4></p>
    <p>Max  : <input type="number" id="randomMaxLimit" value=8></p>
    <p>Loops: <input type="number" id="loopLimit" value=1000></p>
    <button type="button" onclick="loopRandomAndPrint()">
    Loop random function and show </button>
    </div>
    <div id="tableContainer" style="float: right;">
    </div>
    </div>
    
  • 3
    var randomnumber = Math.floor(Math.random() * (maximum - minimum + 1)) + minimum;
    
  • 28
    function getRandomizer(bottom, top) {
        return function() {
            return Math.floor( Math.random() * ( 1 + top - bottom ) ) + bottom;
        }
    }
    

    用法:

    var rollDie = getRandomizer( 1, 6 );
    
    var results = ""
    for ( var i = 0; i<1000; i++ ) {
        results += rollDie() + " ";    //make a string filled with 1000 random numbers in the range 1-6.
    }
    

    分解:

    我们正在返回一个函数(借用函数式编程),当调用它时,将返回值 bottomtop 之间的随机整数 . 我们说'inclusive'因为我们想要在可以返回的数字范围内包括底部和顶部 . 这样, getRandomizer( 1, 6 ) 将返回1,2,3,4,5或6 .

    (底部是较低的数字,顶部是较大的数字)

    Math.random() * ( 1 + top - bottom )
    

    Math.random() 返回0到1之间的随机双精度数,如果我们将它乘以1加上 topbottom 之间的差值,我们将在 01+b-a 之间得到一个双精度数 .

    Math.floor( Math.random() * ( 1 + top - bottom ) )
    

    Math.floor 将数字向下舍入为最接近的整数 . 所以我们现在拥有 0top-bottom 之间的所有整数 . 1看起来令人困惑,但它需要在那里因为我们总是向下舍入,所以如果没有它,那么最高的数字将永远不会实现 . 我们生成的随机小数需要在 0(1+top-bottom) 的范围内,所以我们可以向下舍入并获得 0top-bottom 范围内的int

    Math.floor( Math.random() * ( 1 + top - bottom ) ) + bottom
    

    上一个示例中的代码为我们提供了 0top-bottom 范围内的整数,因此我们现在需要做的就是将 bottom 添加到该结果中以获得 bottomtop 范围内的整数 . :d


    注意:如果你传入一个非整数值或更大的数字,你会得到不良行为,但除非有人要求它,我不会深入研究参数检查代码,因为它远离原始问题的意图 .

  • 28

    使用以下代码可以生成随机数组数字,不重复,在给定范围内 .

    function genRandomNumber(how_many_number,min,max) {
    
                // parameters
                // how_many_number : how many numbers you want to generate. For example it is 5.
                // min(inclusive) : minimum/low value of a range. it must be any positive integer but less than max. i.e 4
                // max(inclusive) : maximun value of a range. it must be any positive integer. i.e 50
                // return type: array
    
                var random_number = [];
                for (var i = 0; i < how_many_number; i++) {
                    var gen_num = parseInt((Math.random() * (max-min+1)) + min);
                    do {
                        var is_exist = random_number.indexOf(gen_num);
                        if (is_exist >= 0) {
                            gen_num = parseInt((Math.random() * (max-min+1)) + min);
                        }
                        else {
                            random_number.push(gen_num);
                            is_exist = -2;
                        }
                    }
                    while (is_exist > -1);
                }
                document.getElementById('box').innerHTML = random_number;
            }
    
  • 9

    返回1到10之间的随机数:

    Math.floor((Math.random()*10) + 1);
    

    返回1到100之间的随机数:

    Math.floor((Math.random()*100) + 1)
    
  • -1

    要获得1到6之间的随机数,首先要做:

    0.5 + (Math.random() * ((6 - 1) + 1))
    

    这将随机数乘以6,然后将其加0.5 . 接下来将数字舍入为正整数:

    Math.round(0.5 + (Math.random() * ((6 - 1) + 1))
    

    这个数字到最接近的整数 .

    或者让它更容易理解:

    var value = 0.5 + (Math.random() * ((6 - 1) + 1))
        var roll = Math.round(value);
        return roll;
    

    通常,使用变量执行此操作的代码是:

    var value = (Min - 0.5) + (Math.random() * ((Max - Min) + 1))
        var roll = Math.round(value);
        return roll;
    

    从最小值中取出0.5的原因是因为单独使用最小值将允许您获得比最大值多一个的整数 . 通过从最小值中取出0.5,您实质上是在阻止最大值被舍入 .

    Hope that helps.

  • 9

    在使用计算机程序生成随机数之后,如果所选择的数字是初始数字的一部分或全部,则仍将其视为随机数 . 但如果它被改变了,那么 mathematicians are not accept it as a random number and they can call it a biased number. 但是如果你正在为一个简单的任务开发一个程序,这不是一个需要考虑的情况 . But if you are developing a program to generate a random number for a valuable stuff such as lottery program, or gambling game, then your program will be rejected by the management if you are not consider about the above case.

    所以对于那些人,这是我的建议:

    使用 Math.random() 生成一个随机数 . (比如说 n

    Now for [0,10) ==>  n*10 (i.e. one digit) and for[10,100) ==> n*100 (i.e. two digits) and so on. Here squire bracket indicates that boundary is inclusive and round bracket indicates boundary is exclusive.
    Then remove the rest after the decimal point. (i.e. get floor) - using Math.floor(), this can be done.
    

    如果您知道如何读取随机数表以选择一个随机数,您知道上面的过程(乘以1,10,100等)并不违反我在开头提到的那个 . (因为它只改变了小数点的位置 . )

    研究以下示例并根据您的需求进行开发 .

    如果您需要样本[0,9],那么n * 10的楼层是您的答案,如果需要[0,99]那么n * 100的楼层是您的答案,依此类推 .

    现在让我们进入你的角色:

    您已经询问了特定范围内的数字 . (在这种情况下,你在这个范围内有偏差 . - 通过掷骰子从[1,6]中取一个数字,然后你偏向[1,6]但是它仍然是随机的,只有当死是无偏的时候 . )

    所以考虑你的范围==> [78,247]范围内的元素数= 247 - 78 1 = 170; (因为两个边界都是包容性的 .

    /*Mthod 1:*/
        var i = 78, j = 247, k = 170, a = [], b = [], c, d, e, f, l = 0;
        for(; i <= j; i++){ a.push(i); }
        while(l < 170){
            c = Math.random()*100; c = Math.floor(c);
            d = Math.random()*100; d = Math.floor(d);
            b.push(a[c]); e = c + d;
            if((b.length != k) && (e < k)){  b.push(a[e]); }
            l = b.length;
        }
        console.log('Method 1:');
        console.log(b);
    /*Method 2:*/
    
        var a, b, c, d = [], l = 0;
        while(l < 170){
            a = Math.random()*100; a = Math.floor(a);
            b = Math.random()*100; b = Math.floor(b);
            c = a + b;
            if(c <= 247 || c >= 78){ d.push(c); }else{ d.push(a); }
            l = d.length;
        }
        console.log('Method 2:');
        console.log(d);
    

    注意:在方法一中,首先我创建了一个包含所需数字的数组,然后将它们随机地放入另一个数组中 . 在方法二中,随机生成数字并检查它们是否在您需要的范围内 . 然后把它放到一个数组中 . 在这里,我生成了两个随机数,并使用它们的总和,通过最小化获得有用数字的失败率来最大化程序的速度 . 但是,添加生成的数字也会带来一些双重性 . 所以我建议我的第一种方法在特定范围内生成随机数 .

    在这两种方法中,您的控制台都会显示结果 . (在Chrome中按f12打开控制台)

  • 5
    function rnd(min,max){
        return Math.floor(Math.random()*(max-min+1)+min );
    }
    
  • 0
    function getRandomInt(lower, upper)
    {
        //to create an even sample distribution
        return Math.floor(lower + (Math.random() * (upper - lower + 1)));
    
        //to produce an uneven sample distribution
        //return Math.round(lower + (Math.random() * (upper - lower)));
    
        //to exclude the max value from the possible values
        //return Math.floor(lower + (Math.random() * (upper - lower)));
    }
    

    要测试此功能以及此功能的变体,请将以下HTML / JavaScript保存到文件并使用浏览器打开 . 代码将生成一个图表,显示一百万个函数调用的分布 . 代码也会记录边缘情况,因此如果函数产生的值大于最大值,或者小于min,则为you.will.know.about.it .

    <html>
        <head>
            <script type="text/javascript">
            function getRandomInt(lower, upper)
            {
                //to create an even sample distribution
                return Math.floor(lower + (Math.random() * (upper - lower + 1)));
    
                //to produce an uneven sample distribution
                //return Math.round(lower + (Math.random() * (upper - lower)));
    
                //to exclude the max value from the possible values
                //return Math.floor(lower + (Math.random() * (upper - lower)));
            }
    
            var min = -5;
            var max = 5;
    
            var array = new Array();
    
            for(var i = 0; i <= (max - min) + 2; i++) {
              array.push(0);
            }
    
            for(var i = 0; i < 1000000; i++) {
                var random = getRandomInt(min, max);
                array[random - min + 1]++;
            }
    
            var maxSample = 0;
            for(var i = 0; i < max - min; i++) {
                maxSample = Math.max(maxSample, array[i]);
            }
    
            //create a bar graph to show the sample distribution
            var maxHeight = 500;
            for(var i = 0; i <= (max - min) + 2; i++) {
                var sampleHeight = (array[i]/maxSample) * maxHeight;
    
                document.write('<span style="display:inline-block;color:'+(sampleHeight == 0 ? 'black' : 'white')+';background-color:black;height:'+sampleHeight+'px">&nbsp;[' + (i + min - 1) + ']:&nbsp;'+array[i]+'</span>&nbsp;&nbsp;');
            }
            document.write('<hr/>');
            </script>
        </head>
        <body>
    
        </body>
    </html>
    
  • 6

    这可以处理生成最多20位UNIQUE随机数

    JS

    var generatedNumbers = [];
    
    function generateRandomNumber(precision) { // precision --> number precision in integer 
        if (precision <= 20) {
            var randomNum = Math.round(Math.random().toFixed(precision) * Math.pow(10, precision));
            if (generatedNumbers.indexOf(randomNum) > -1) {
                if (generatedNumbers.length == Math.pow(10, precision))
                    return "Generated all values with this precision";
                    return generateRandomNumber(precision);
            } else {
                generatedNumbers.push(randomNum);
                return randomNum;
            }
        } else
           return "Number Precision shoould not exceed 20";
    }
    generateRandomNumber(1);
    

    JsFiddle

  • 6

    这是我用来生成随机数的方法 .

    function random(high,low) {
        high++;
        return Math.floor((Math.random())*(high-low))+low;
    }
    

    我们执行 high++ 因为 Math.random() 生成0(包括)和1(不包括)之间的随机数 . 被排除的那个,意味着我们必须在执行任何数学运算之前将高点加1 . 然后我们从高中减去低,给我们产生最高的数字 - 低,然后低,使高回到正常,并使最低数量至少低 . 然后我们返回结果数字

    random(7,3) 可以返回 3,4,5,6, or 7

  • -1
    <!DOCTYPE html>
    <html>
        <head>
                <meta charset="utf-8" />
        </head>
        <body>
            <script>
                /*
    
                    assuming that window.crypto.getRandomValues is available
                    the real range would be fron 0 to 1,998 instead of 0 to 2,000
                    See javascript documentation for explanation
                    https://developer.mozilla.org/en-US/docs/Web/API/RandomSource/getRandomValues
                */
                var array = new Uint8Array(2);
                window.crypto.getRandomValues(array);
                console.log(array[0] + array[1]);
    
            </script>
        </body>
    </html>
    

    Uint8Array创建一个数组,最多包含3位数字,最大值为999.此代码非常短 .

  • 50

    / *编写一个名为 randUpTo 的函数,它接受一个数字并返回0和该数字之间的随机整数? * /

    var randUpTo = function(num) {
        return Math.floor(Math.random() * (num - 1) + 0);
    };
    

    / *编写一个名为 randBetween 的函数,它接受两个代表范围的数字,并在这两个数字之间返回一个随机整数 . * /

    var randBetween = function (min, max) {
        return Math.floor(Math.random() * (max - min - 1)) + min;
    };
    

    / *编写一个名为 randFromTill 的函数,它接受两个代表范围的数字,并返回min(包括)和max(不包括)之间的随机数 . * /

    var randFromTill = function (min, max) {
        return Math.random() * (max - min) + min;
    };
    

    / 编写一个名为 randFromTo 的函数,它接受两个表示范围的数字,并返回min(包括)和max(包括)之间的随机整数 /

    var randFromTo = function (min, max) {
        return Math.floor(Math.random() * (max - min + 1)) + min;
    };
    
  • 0

    我知道这个问题已经回答了,但我的回答可以帮助别人 .

    我在W3Schools上找到了这个简单的方法:

    Math.floor((Math.random() * max) + min);
    

    希望这会对某人有所帮助 .

相关问题