按给出的数和类型随机生成组合JS代码

按给出的数和类型随机生成组合JS代码

随机出了5红

//格式化显示生成数组组合
const formatShow = (arr) => { 
  for(i=0;i<arr.length;i++){
      console.log("第"+(parseInt(i)+1).toString(10)+"组:"+arr[i] )
  }
}
//数组去重排序
const uniqueAndSort = (array) => {
    // 使用 Set 结构去除重复元素
    const uniqueElements = [...new Set(array)];
    // 对去重后的数组进行排序
    uniqueElements.sort((a, b) => a - b); // 升序排序
    return uniqueElements;
}
//随机生成
const getRandomArrayElements = (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);
}
//双色球数组与类型
const generateDoubleColorBallNumbers = (digits, types) => {
// Splitting the digits into the specified ranges
var range1 = digits.filter(function(d) { return 1 <= d && d <= 9; });
var range2 = digits.filter(function(d) { return 10 <= d && d <= 19; });
var range3 = digits.filter(function(d) { return 20 <= d && d <= 29; });
var range4 = digits.filter(function(d) { return 30 <= d && d <= 33; });

// Initialize the result list
var result = [];

for (var i = 0; i < 10; i++) {
var selectedNumbers = [];
// Randomly sample from each range without replacement
if (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 unique
if (new Set(selectedNumbers).size === selectedNumbers.length) {
result.push(selectedNumbers.slice().sort(function(a, b) { return a - b; }));
} else {
// If not unique, repeat the process for this set
continue;
}

// Stop if we have generated 10 unique sets
if (result.length === 10) {
break;
}
}

return result;
}



//生成所有满足条件的组合
const generateAllCombinations = (digits, types) => {
// Splitting the digits into the specified ranges
var range1 = digits.filter(function(d) { return 1 <= d && d <= 9; });
var range2 = digits.filter(function(d) { return 10 <= d && d <= 19; });
var range3 = digits.filter(function(d) { return 20 <= d && d <= 29; });
var range4 = digits.filter(function(d) { return 30 <= d && d <= 33; });

// Initialize the result list
var result = [];

// Generate combinations for each type
for (var type_count of types) {
for (var combo of generateCombinations(range1, type_count)) {
for (var combo2 of generateCombinations(range2, type_count)) {
for (var combo3 of generateCombinations(range3, type_count)) {
result.push(combo.concat(combo2).concat(combo3));
}
}
}
}

return result;
}
//随机生成指定数量的组合
const generateCombinations = (elements, count) => {
if (count === 0) {
yield [];
return;
}
for (var i = 0; i < elements.length; i++) {
for (var combo of generateCombinations(elements.slice(i + 1), count - 1)) {
yield [elements[i]].concat(combo);
}
}
}

// Example usage


var 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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值