特定列表中的随机数

时间:2016-08-15 11:01:03

标签: javascript arrays random

我需要创建一些像

这样的彩票批次

我的清单是1 - 100,或者可能会变化到1 - 200或1到300

  1. 从这些列表中获取35个随机数字。
  2. 从这些列表中获取另外25个号码。
  3. 从这些列表中获取另外10个号码。
  4. 仅使用Javascript。

2 个答案:

答案 0 :(得分:1)

这是一个非常简短的示例,该脚本创建一个0到10的随机数列表(您可以通过为参数min / max getRandomInt(min, max)传递不同的值来更改数字池。

getNumbers(times)中的参数指定您希望从池中提取一个号码的时间。

请记住,此示例可以在不同的交互中多次提取一个数字(因为原始问题中未提及此要求)。



(function() {
  var getRandomInt = function(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
  };
  var getNumbers = function(times) {
    for (var i = 0; i < times; i++) {
      console.log(getRandomInt(0, 100));
    }
  };
  console.log('---------- Pickup 35 numbers');
  getNumbers(35);
  console.log('---------- Pickup 25 numbers');
  getNumbers(25);
  console.log('---------- Pickup 10 numbers');
  getNumbers(10);
})();
&#13;
&#13;
&#13;

以下版本仅提取唯一编号(来自您的评论请求):

&#13;
&#13;
(function() {
  var usedNumbers = [];
  var getRandomInt = function(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
  };
  var getNumbers = function(times) {
    for (var i = 0; i < times; i++) {
      var number = getRandomInt(0, 100);
      if (usedNumbers.indexOf(number) === -1) {
        usedNumbers.push(number);
        console.log(number);
      }
    }
  };
  console.log('---------- Pickup 35 unique numbers');
  getNumbers(35);
  console.log('---------- Pickup 25 unique numbers');
  getNumbers(25);
  console.log('---------- Pickup 10 unique numbers');
  getNumbers(10);
})();
&#13;
&#13;
&#13;

答案 1 :(得分:0)

这是我写的函数,它将每个随机数与之前的数字进行比较以避免重复,如果你想排除某些数字(例如,之前的尝试),你可以将它们作为exc传递给函数。

var lottery = function (min, max, size, exc) {
  var results = []
      , isDuplicate = false
      , random = 0;
  exc = exc || [];	  
  for (var i = 0; i < size; i++) {
    isDuplicate = true
    while (isDuplicate) {
      random = Math.floor(Math.random() * (max - min + 1)) + min;
      if (results.indexOf(random) === -1 && exc.indexOf(random) === -1) {
        results.push(random);
        isDuplicate = false
      }
    }
  }
  return results;
}

var firstRun = lottery(1,100,35);
console.log(firstRun);
var secondRun = lottery(1,100,25,firstRun);
console.log(secondRun);