我需要创建一些像
这样的彩票批次我的清单是1 - 100,或者可能会变化到1 - 200或1到300
仅使用Javascript。
答案 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;
以下版本仅提取唯一编号(来自您的评论请求):
(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;
答案 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);