SOURCE

console 命令行工具 X clear

                    
>
console
<!DOCTYPE html>
<html>
<head>
    <title>双色球智能选号</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <style>
        body { padding: 20px; font-family: Arial; }
        #result { margin-top: 20px; padding: 15px; border: 2px solid #4CAF50; border-radius: 5px; }
        button {
            background-color: #4CAF50;
            color: white;
            padding: 10px 20px;
            border: none;
            border-radius: 5px;
            cursor: pointer;
        }
    </style>
</head>
<body>
    <h2>双色球智能选号器</h2>
    <button onclick="generateNumbers()">生成推荐号码</button>
    <div id="result"></div>

    <script>
        // 工具函数
        function getRandom(min, max) {
            return Math.floor(Math.random() * (max - min + 1)) + min;
        }

        // 校验函数组
        function hasConsecutive(nums) {
            return nums.some((n, i) => i > 0 && n === nums[i-1]+1);
        }

        function checkRange(nums) {
            return [1, 11, 21].every(start => 
                nums.some(n => n >= start && n <= start+9)
            );
        }

        function checkHistoryRepeat(nums, data) {
            return !data.some(item => 
                item.red.sort().join(',') === nums.sort().join(',')
            );
        }

        function checkOddEvenRatio(nums, data) {
            const oddCount = nums.filter(n => n%2 === 1).length;
            return oddCount > 0 && oddCount < 6;
        }

        function checkPrimeComposite(nums, data) {
            const primes = [2,3,5,7,11,13,17,19,23,29,31];
            return nums.filter(n => primes.includes(n)).length <= 3;
        }

        function checkSizeRatio(nums, data) {
            const big = nums.filter(n => n > 17).length;
            return big >= 2 && big <= 4;
        }

        function checkThreeCode(nums, data) {
            return nums.some((n, i) => 
                nums.includes(n+1) && nums.includes(n+2)
            );
        }

        // 数据相关函数
        let historyData = [
            { red: [3, 8, 12, 19, 24, 29], blue: 7 },
            { red: [1, 5, 11, 17, 22, 33], blue: 12 }
        ];

        function fetchLatestData() {
            return historyData.length > 0 ? historyData : null;
        }

        // 核心生成函数
        function generateNumbers() {
            const latestData = fetchLatestData();
            
            if (!latestData || latestData.length === 0) {
                alert("暂无历史数据,正在使用随机模式生成");
                return generateFallbackNumbers();
            }

            let validNumbers;
            let attempts = 0;
            
            do {
                attempts++;
                let candidate = generateBaseNumbers();
                candidate = adjustNumbers(candidate, latestData);
                
                if (checkAllConditions(candidate, latestData)) {
                    validNumbers = candidate;
                    break;
                }
                
            } while (attempts < 5000);

            displayResult(validNumbers || "未找到符合所有条件的组合");
        }

        function generateBaseNumbers() {
            let numbers = new Set();
            numbers.add(getRandom(1,10));
            numbers.add(getRandom(11,20));
            numbers.add(getRandom(21,33));
            
            while (numbers.size < 6) {
                const num = getRandom(1, 33);
                if (!numbers.has(num)) numbers.add(num);
            }
            
            return [...numbers].sort((a,b) => a-b);
        }

        function adjustNumbers(numbers, data) {
            if (!data || data.length === 0) return numbers;

            if (!hasConsecutive(numbers)) {
                const pos = getRandom(0, 3);
                numbers[pos] = numbers[pos+1]-1;
            }
            
            const lastNumbers = data[0].red;
            const common = numbers.filter(n => lastNumbers.includes(n));
            if (common.length < 1) {
                numbers[getRandom(0,5)] = lastNumbers[getRandom(0,5)];
            }
            
            return [...new Set(numbers)].sort((a,b) => a-b).slice(0,6);
        }

        function checkAllConditions(numbers, data) {
            return [
                checkRange(numbers),
                hasConsecutive(numbers),
                checkHistoryRepeat(numbers, data),
                checkOddEvenRatio(numbers, data),
                checkPrimeComposite(numbers, data),
                checkSizeRatio(numbers, data),
                checkThreeCode(numbers, data)
            ].every(condition => condition);
        }

        function generateFallbackNumbers() {
            let numbers = [];
            while (numbers.length < 6) {
                const num = getRandom(1, 33);
                if (!numbers.includes(num)) numbers.push(num);
            }
            displayResult(numbers.sort((a,b) => a-b));
        }

        function displayResult(numbers) {
            const resultDiv = document.getElementById('result');
            resultDiv.innerHTML = numbers.length ? 
                `推荐号码:${numbers.join(', ')}` : 
                "未找到符合所有条件的组合";
        }
    </script>
</body>
</html>