Want to produce random numbers between 1-45 without repetition

前端 未结 4 1428
你的背包
你的背包 2021-01-29 13:53

I have come across a very strange problem. I have tried to find its solution but in vain. My problem is that I want to create a random number between 1-45 and I don\'t want tha

相关标签:
4条回答
  • 2021-01-29 14:05

    Random selection, by definition, will repeat randomly.

    However, you can build an array containing each of your numbers and then shuffle the array, producing a random order of numbers without repetition.

    var nums = [], i;
    for( i=1; i<=45; i++) nums.push(i);
    nums.sort(function(a,b) {return Math.random()-0.5;});
    alert(nums.join(","));
    
    0 讨论(0)
  • 2021-01-29 14:12

    This is Working code..

    Random rd =new Random();    
    int n = rd.Next(1,45);
    
    0 讨论(0)
  • 2021-01-29 14:24

    What you really want is to create a set of numbers in a given range and to randomly remove one of the numbers until the set is empty.

    Here is a function which generates another function which does exactly that:

    function generateRandomRangeSet(beg, end) {
      var numbers = []; // Create an array in range [beg, end].
      for (var i=beg; i<=end; i++) { numbers.push(i); }
      return function() {
        if (numbers.length < 1) { throw new Error('no more numbers'); }
        var i=Math.floor(Math.random()*numbers.length), number=numbers[i];
        numbers.splice(i, 1); // Return and remove a random element of the array.
        return number;
      }
    }
    
    var r = generateRandomRangeSet(1, 45);
    r(); // => 9
    r(); // => 24
    r(); // => 7 ... for each number [1, 45] then ...
    r(); // Error: no more numbers
    
    0 讨论(0)
  • 2021-01-29 14:26

    This is working

    function getRandomInt(min, max) {
        return Math.floor(Math.random() * (max - min)) + min;
    }
    
    0 讨论(0)
提交回复
热议问题