//格式化显示生成数组组合constformatShow=(arr)=>{for(i=0;i<arr.length;i++){
console.log("第"+(parseInt(i)+1).toString(10)+"组:"+arr[i])}}//数组去重排序constuniqueAndSort=(array)=>{// 使用 Set 结构去除重复元素const uniqueElements =[...newSet(array)];// 对去重后的数组进行排序
uniqueElements.sort((a, b)=> a - b);// 升序排序return uniqueElements;}//随机生成constgetRandomArrayElements=(arr, count)=>{var shuffled = arr.slice(0), i = arr.length, min = i - count, temp, index;while(i--> min){
index = Math.floor((i +1)* Math.random());
temp = shuffled[index];
shuffled[index]= shuffled[i];
shuffled[i]= temp;}return shuffled.slice(min);}//双色球数组与类型constgenerateDoubleColorBallNumbers=(digits, types)=>{// Splitting the digits into the specified rangesvar range1 = digits.filter(function(d){return1<= d && d <=9;});var range2 = digits.filter(function(d){return10<= d && d <=19;});var range3 = digits.filter(function(d){return20<= d && d <=29;});var range4 = digits.filter(function(d){return30<= d && d <=33;});// Initialize the result listvar result =[];for(var i =0; i <10; i++){var selectedNumbers =[];// Randomly sample from each range without replacementif(types[0]>0){
selectedNumbers.push.apply(selectedNumbers,getRandomArrayElements(range1, types[0]));}if(types[1]>0){
selectedNumbers.push.apply(selectedNumbers,getRandomArrayElements(range2, types[1]));}if(types[2]>0){
selectedNumbers.push.apply(selectedNumbers,getRandomArrayElements(range3, types[2]));}if(types[3]>0){
selectedNumbers.push.apply(selectedNumbers,getRandomArrayElements(range4, types[3]));}// Check if the selected numbers are uniqueif(newSet(selectedNumbers).size === selectedNumbers.length){
result.push(selectedNumbers.slice().sort(function(a, b){return a - b;}));}else{// If not unique, repeat the process for this setcontinue;}// Stop if we have generated 10 unique setsif(result.length ===10){break;}}return result;}//生成所有满足条件的组合constgenerateAllCombinations=(digits, types)=>{// Splitting the digits into the specified rangesvar range1 = digits.filter(function(d){return1<= d && d <=9;});var range2 = digits.filter(function(d){return10<= d && d <=19;});var range3 = digits.filter(function(d){return20<= d && d <=29;});var range4 = digits.filter(function(d){return30<= d && d <=33;});// Initialize the result listvar result =[];// Generate combinations for each typefor(var type_count of types){for(var combo ofgenerateCombinations(range1, type_count)){for(var combo2 ofgenerateCombinations(range2, type_count)){for(var combo3 ofgenerateCombinations(range3, type_count)){
result.push(combo.concat(combo2).concat(combo3));}}}}return result;}//随机生成指定数量的组合constgenerateCombinations=(elements, count)=>{if(count ===0){yield[];return;}for(var i =0; i < elements.length; i++){for(var combo ofgenerateCombinations(elements.slice(i +1), count -1)){yield[elements[i]].concat(combo);}}}// Example usagevar digits=[1,2,3,6,7,8,9,10,11,12,13,14,15,16,17,18,19,22,23,25,26,27,28,30,31,32,33];var types=[2,3,1,0];// Generate all combinations//生成所有满足条件的组合var allCombinations =generateAllCombinations(digits, types);//console.log(allCombinations);formatShow(allCombinations);// Generate the numbers with the given types//随机生成指定组合var doubleColorBallNumbers =generateDoubleColorBallNumbers(digits, types);var doubleColorBallRandomNumbers =getRandomArrayElements(doubleColorBallNumbers ,10)formatShow(doubleColorBallRandomNumbers)