基本上有兩種方法可供
第一
- 產生一個隨機數(從您所設定的)
- 檢查羯羊結果已經包含了這個數字
- 如果沒有,添加此數字
- 重複,直到您有足夠的數字
function numericAscending(a,b){ return a-b; }
function lotteryNumbers(){
var numbers = [];
while(numbers.length < 6){
var nr = Math.floor(Math.random() * 59 + 1);
if(!numbers.includes(nr))
numbers.push(nr);
}
return numbers.sort(numericAscending);
}
這種方法很好,如果你只想從一個大集合中只有幾個數字,因爲在這裏碰撞很少。
第二,因爲你有一個非常小的一組數字,你可以
- createa數組,其中包含所有可能的數字
- 洗牌此陣
- ,並採取你需要
儘可能多
function shuffle(array){
for(var i=array.length; i--;){
var j = Math.floor(Math.random() * (i+1));
if(i === j) continue;
var tmp = array[j];
array[j] = array[i];
array[i] = tmp;
}
return array;
}
function lotteryNumbers(){
var allPossibleLotteryNumbers = [];
for(var i=1; i<=60;++i)
allPossibleLotteryNumbers.push(i);
return shuffle(allPossibleLotteryNumbers).slice(0, 6).sort(numericAscending);
}
這種做法是推薦當你想要集合中的大部分數字時,就可以編輯它們,因爲到最後,第一種方法會創建大量已經在結果中的隨機數字。或者就像這裏一樣,如果你的數字集非常小,你不必關心將所有數字存儲在數組中。
而且,由於你的設置不改變這裏,你可以數的數組存儲功能
var allPossibleLotteryNumbers = [];
for(var i=1; i<=60;++i)
allPossibleLotteryNumbers.push(i);
function lotteryNumbers(){
return shuffle(allPossibleLotteryNumbers).slice(0, 6).sort(numericAscending);
}
如果數組中已經包含當前數之外 - 不推... –