Back to skills
extension
Category: Productivity & OfficeNo API key required

lottery-prediction

根据往期体彩大乐透数据,预测本期大乐透5注号码

personAuthor: leex852hubgithub

大乐透预测技能

技能名称

lottery-prediction

技能描述

根据往期体彩大乐透数据,预测本期大乐透5注号码

完整指令内容

功能概述

本技能通过在线获取历史大乐透开奖数据,利用多种算法分析号码出现规律,生成5注预测号码供参考。

执行流程

本技能按以下步骤依次执行,完整实现从数据获取到预测输出的全流程:


步骤 1:数据获取 (data_fetcher.py)

脚本位置: scripts/data_fetcher.py

功能概述: 从体彩官方API获取大乐透历史开奖数据,支持缓存机制和异常处理。

数据源配置:

  • 体彩官方API
    • URL: https://webapi.sporttery.cn/gateway/lottery/getHistoryPageListV1.qry
    • 游戏编号: gameNo=85 (大乐透)
    • 解析方式: JSON API响应
    • 数据格式: 期号、日期、前区5个号码、后区2个号码

核心方法:

  • fetch_history(count) - 获取指定期数的历史数据
  • _generate_mock_data(count) - 生成模拟数据(当API请求失败时)
  • save_to_file(data, filename) - 保存数据到JSON文件
  • load_from_file(filename) - 从JSON文件加载数据

异常处理:

  • 网络超时(15秒)
  • JSON解析失败
  • API返回错误时自动切换到模拟数据

数据格式:

{
  "period": "2026001",
  "date": "2026-01-25",
  "front": [1, 8, 15, 22, 29],
  "back": [3, 9]
}

步骤 2:数据分析 (analyzer.py)

脚本位置: scripts/analyzer.py

功能概述: 对历史数据进行多维度分析,生成详细的统计报告。

分析方法:

2.1 频率分析 (frequency_analysis)
  • 统计每个号码在历史数据中出现的总次数
  • 计算每个号码的出现频率(出现次数/总期数)
  • 识别高频号:出现次数最多的前10个号码
  • 识别低频号:出现次数最少的前10个号码
  • 分别统计前区(1-35)和后区(1-12)

输出结构:

{
  'front': {
    'total': {1: 15, 2: 12, ...},  # 各号码出现次数
    'frequency': {1: 0.15, 2: 0.12, ...},  # 出现频率
    'high_frequency': [(17, 25), (23, 24), ...],  # 高频号及次数
    'low_frequency': [(35, 5), (1, 6), ...]  # 低频号及次数
  },
  'back': {...}  # 后区类似结构
}
2.2 区间分析 (interval_analysis)
  • 前区: 1-35分为7个区间,每区间5个号码
    • 区间1: 01-05, 区间2: 06-10, ..., 区间7: 31-35
  • 后区: 1-12分为3个区间,每区间4个号码
    • 区间1: 01-04, 区间2: 05-08, 区间3: 09-12
  • 统计各区间号码出现的分布情况
  • 识别最热和最冷区间

输出结构:

{
  'front': {
    'intervals': {'01-05': [1,2,3,4,5], ...},
    'distribution': {'01-05': 45, '06-10': 52, ...}
  },
  'back': {...}
}
2.3 奇偶比分析 (odd_even_analysis)
  • 统计每期开奖号码中奇数和偶数的数量
  • 计算平均奇偶比例
  • 统计最常见的奇偶组合模式
  • 分别分析前区(5个号码)和后区(2个号码)

输出结构:

{
  'front': {
    'avg_odd': 2.5,  # 平均奇数个数
    'avg_even': 2.5,  # 平均偶数个数
    'common_patterns': [('3:2', 35), ('2:3', 28), ...]  # 常见组合
  },
  'back': {...}
}
2.4 和值分析 (sum_value_analysis)
  • 计算每期前区5个号码的总和
  • 统计和值的最小值、最大值、平均值、中位数
  • 计算和值的标准差
  • 统计最常见的和值
  • 分析最近10期的和值趋势
  • 根据平均值±标准差推荐和值范围

输出结构:

{
  'values': [85, 92, 78, ...],  # 所有期数的和值
  'statistics': {
    'min': 55,
    'max': 145,
    'avg': 98.5,
    'median': 97,
    'std': 18.3
  },
  'common_sums': [(95, 8), (97, 7), ...],  # 常见和值
  'recent_trends': [85, 92, ...],  # 最近10期
  'recommended_range': [80, 117]  # 推荐和值范围
}
2.5 遗漏分析 (miss_analysis)
  • 计算每个号码连续未出现的期数(从最新一期向前回溯)
  • 识别长期遗漏号码(前区遗漏>20期,后区遗漏>15期)
  • 按遗漏次数排序,找出遗漏最严重的号码
  • 为遗漏策略提供数据支持

输出结构:

{
  'front': {
    'all_miss': {1: 5, 2: -1, ...},  # -1表示本期已出现
    'long_miss': [31, 35, ...],  # 长期遗漏的号码
    'top_miss': [(35, 28), (31, 25), ...]  # 按遗漏次数排序
  },
  'back': {...}
}

核心方法:

  • analyze_all() - 执行所有分析算法
  • generate_report() - 生成格式化的分析报告

步骤 3:预测生成 (predictor.py)

脚本位置: scripts/predictor.py

功能概述: 基于分析结果,使用多种策略生成预测号码。

预测策略:

3.1 均衡策略 (_balanced_strategy)
  • 原理: 结合高频号和低频号,保持号码选择的均衡性
  • 前区: 从高频号选2个 + 低频号选2个 + 随机选1个
  • 后区: 从高频号选1个 + 随机选1个
  • 优点: 兼顾冷热号码,风险分散
3.2 冷热策略 (_hot_cold_strategy)
  • 原理: 侧重于高频"热号"
  • 前区: 从高频号中随机选5个
  • 后区: 从高频号中随机选2个
  • 优点: 跟随历史趋势
3.3 遗漏策略 (_miss_strategy)
  • 原理: 考虑长期遗漏号码的"回补"概率
  • 前区: 从长期遗漏号选2个 + 高频号选3个
  • 后区: 从遗漏号选1个 + 高频号选1个
  • 优点: 捕捉可能的回补机会
3.4 区间策略 (_interval_strategy)
  • 原理: 确保号码均匀分布在不同区间
  • 前区: 从前5个区间各选1个号码
  • 后区: 从2个区间各选1个号码
  • 优点: 覆盖面广,避免集中在少数区间
3.5 随机策略 (_random_strategy)
  • 原理: 完全随机选择号码
  • 前区: 从1-35随机选5个不重复号码
  • 后区: 从1-12随机选2个不重复号码
  • 优点: 纯随机性,无主观偏好

核心方法:

  • predict(count) - 生成指定注数的预测
  • validate_prediction(prediction) - 验证预测号码有效性
  • format_prediction(prediction, index) - 格式化单注预测
  • generate_summary(predictions) - 生成预测摘要

验证规则:

  • 前区必须5个号码,范围1-35,不重复
  • 后区必须2个号码,范围1-12,不重复

步骤 4:主程序执行 (lottery_main.py)

脚本位置: scripts/lottery_main.py

功能概述: 整合数据获取、分析和预测功能,提供统一的命令行接口。

执行流程:

1. 解析命令行参数
   ↓
2. 数据获取 (data_fetcher)
   - 检查是否使用缓存
   - 获取指定期数的历史数据
   - 可选保存到缓存
   ↓
3. 数据分析 (analyzer)
   - 执行5种分析算法
   - 生成分析结果
   ↓
4. 预测生成 (predictor)
   - 使用多种策略生成预测号码
   - 验证预测有效性
   ↓
5. 输出结果
   - 文本格式或JSON格式
   - 可选显示详细分析报告

命令行参数:

| 参数 | 说明 | 默认值 | |------|------|--------| | -p, --periods | 分析的期数 | 100 | | -n, --numbers | 生成的预测注数 | 5 | | -f, --format | 输出格式(text/json) | text | | --show-analysis | 显示详细数据分析报告 | False | | --use-cache | 使用缓存的历史数据 | False | | --save-cache | 保存数据到缓存 | False | | --cache-file | 缓存文件路径 | lottery_history.json |

使用示例:

# 基本用法
python scripts/lottery_main.py

# 分析最近150期,生成8注预测
python scripts/lottery_main.py -p 150 -n 8

# 输出JSON格式
python scripts/lottery_main.py -f json

# 使用缓存并显示详细分析
python scripts/lottery_main.py --use-cache --show-analysis

# 保存数据到缓存
python scripts/lottery_main.py --save-cache

输出格式:

  1. 文本格式 (默认):

    ============================================================
    【大乐透预测号码】
    ============================================================
    期次:2026001(下一期预测)
    分析期数:100 期
    
    推荐5注号码:
    第1注:03 09 17 24 31 + 04 08 [均衡策略]
    第2注:05 12 19 26 33 + 02 11 [冷热策略]
    ...
    
    预测依据:
    - 高频号前区: [17, 23, 29, 05, 12]
    - 高频号后区: [04, 09, 11]
    ...
    
    注:仅供娱乐参考,理性投注
    ============================================================
    
  2. JSON格式:

    {
      "period": "2026001",
      "analysis_periods": 100,
      "predictions": [
        {"front": ["03", "09", ...], "back": ["04", "08"], "strategy": "均衡策略"},
        ...
      ],
      "analysis": {...},
      "disclaimer": "仅供娱乐参考,理性投注"
    }
    

步骤 5:输出格式

生成清晰的预测结果,包含:

【大乐透预测号码】
期次:XXXXXXX(最新期次)

推荐5注号码:
第1注:01 08 15 22 29 + 03 09
第2注:05 12 18 25 33 + 04 11
第3注:02 09 16 23 30 + 05 07
第4注:07 14 21 28 35 + 02 08
第5注:04 11 17 24 31 + 06 12

预测依据:
- 高频号:xx, xx, xx
- 低频号:xx, xx, xx
- 奇偶比:xx:xx
- 和值范围:xx-xx
- 遗补号码:xx, xx

注:仅供娱乐参考,理性投注

使用说明

基本用法

直接运行主程序使用默认设置:

python scripts/lottery_main.py

高级选项

使用命令行参数自定义预测:

# 分析最近150期
python scripts/lottery_main.py --periods 150

# 生成8注预测
python scripts/lottery_main.py --numbers 8

# 输出JSON格式
python scripts/lottery_main.py --format json

# 显示详细数据分析报告
python scripts/lottery_main.py --show-analysis

# 使用缓存数据(避免重复下载)
python scripts/lottery_main.py --use-cache

# 保存数据到缓存
python scripts/lottery_main.py --save-cache

# 组合使用多种选项
python scripts/lottery_main.py -p 200 -n 10 -f json --show-analysis --save-cache

单独测试各个模块

# 测试体彩官方API连接性
python scripts/test_sporttery_api.py

# 测试数据获取模块
python scripts/data_fetcher.py

# 测试数据分析模块
python scripts/analyzer.py

# 测试预测生成模块
python scripts/predictor.py

注意事项

  1. 本预测仅供娱乐参考,不保证中奖
  2. 请理性投注,量力而行
  3. 彩票有风险,投资需谨慎
  4. 预测结果不构成任何投资建议

技术实现

技术栈

  • 语言: Python 3.7+
  • 核心库:
    • requests - HTTP请求,获取在线数据
    • json - JSON数据处理
    • argparse - 命令行参数解析
    • collections - 高级数据结构(Counter, defaultdict)
    • statistics - 统计计算
    • random - 随机数生成
    • re - 正则表达式解析HTML
    • pathlib - 路径操作

项目结构

lottery-prediction/
├── SKILL.md                    # 技能说明文档(本文件)
└── scripts/                    # 可执行脚本目录
    ├── data_fetcher.py          # 数据获取模块
    ├── analyzer.py              # 数据分析模块
    ├── predictor.py             # 预测生成模块
    ├── lottery_main.py          # 主程序入口
    └── test_sporttery_api.py    # 体彩API测试脚本

模块说明

1. data_fetcher.py - 数据获取模块

  • LotteryDataFetcher 类:封装所有数据获取逻辑
  • 使用体彩官方API获取大乐透历史数据
  • 缓存机制:save_to_file()load_from_file()
  • 异常处理:API请求失败时自动使用模拟数据

2. analyzer.py - 数据分析模块

  • LotteryAnalyzer 类:封装所有分析算法
  • 五种分析方法:频率、区间、奇偶比、和值、遗漏
  • 统计计算:平均值、中位数、标准差
  • 报告生成:generate_report() 生成可读性强的分析报告

3. predictor.py - 预测生成模块

  • LotteryPredictor 类:封装所有预测逻辑
  • 五种预测策略:均衡、冷热、遗漏、区间、随机
  • 验证机制:validate_prediction() 确保预测号码有效
  • 格式化输出:支持文本和JSON格式

4. lottery_main.py - 主程序

  • 整合所有模块,提供统一接口
  • 命令行参数解析
  • 流程编排:数据获取 → 分析 → 预测 → 输出
  • Windows终端UTF-8兼容:UTF8Stdout 包装器
  • 输出格式:text 和 JSON

5. test_sporttery_api.py - API测试脚本

  • 测试体彩官方API的连接性
  • 验证API响应格式和数据结构
  • 用于调试和验证数据获取功能

数据流程

┌─────────────────┐
│  命令行参数     │
└────────┬────────┘
         ↓
┌─────────────────┐
│  LotteryData    │
│  Fetcher        │
│  ┌───────────┐  │
│  │体彩官方API│──┼──► 成功
│  ├───────────┤  │
│  │ 模拟数据 │──┼──► 兜底
│  └───────────┘  │
└────────┬────────┘
         ↓
┌─────────────────┐
│  LotteryAnalyzer │
│  ┌───────────┐  │
│  │频率分析   │  │
│  ├───────────┤  │
│  │区间分析   │  │
│  ├───────────┤  │
│  │奇偶分析   │  │
│  ├───────────┤  │
│  │和值分析   │  │
│  ├───────────┤  │
│  │遗漏分析   │  │
│  └───────────┘  │
└────────┬────────┘
         ↓
┌─────────────────┐
│ LotteryPredictor│
│  ┌───────────┐  │
│  │均衡策略   │  │
│  ├───────────┤  │
│  │冷热策略   │  │
│  ├───────────┤  │
│  │遗漏策略   │  │
│  ├───────────┤  │
│  │区间策略   │  │
│  ├───────────┤  │
│  │随机策略   │  │
│  └───────────┘  │
└────────┬────────┘
         ↓
┌─────────────────┐
│  输出结果       │
│  - 文本格式     │
│  - JSON格式     │
└─────────────────┘

特性说明

  1. 官方API数据源: 使用体彩官方API获取大乐透历史数据
  2. 缓存机制: 支持保存和加载数据,避免重复请求
  3. 多种分析算法: 频率、区间、奇偶比、和值、遗漏等5种算法
  4. 多种预测策略: 均衡、冷热、遗漏、区间、随机等5种策略
  5. 灵活输出: 支持文本和JSON两种格式
  6. 详细报告: 可选显示完整的分析报告
  7. 异常处理: 完善的异常处理,确保程序稳定运行
  8. 模块化设计: 各模块职责清晰,易于维护和扩展
  9. Windows兼容: UTF-8输出包装器,确保Windows终端正常显示中文

更新日志

  • v2.0: 完整模块化实现
    • 新增 data_fetcher.py:支持多数据源、缓存机制
    • 新增 analyzer.py:实现5种分析算法(频率、区间、奇偶比、和值、遗漏)
    • 新增 predictor.py:实现5种预测策略(均衡、冷热、遗漏、区间、随机)
    • 新增 lottery_main.py:统一命令行接口,支持多种输出格式
  • v1.3: 添加预测依据说明
  • v1.2: 改进数据获取稳定性
  • v1.1: 增加多种分析算法
  • v1.0: 基础预测功能

快速开始

安装依赖

pip install requests

运行示例

# 基本预测
python scripts/lottery_main.py

# 详细分析
python scripts/lottery_main.py --show-analysis

# JSON输出
python scripts/lottery_main.py --format json

常见问题

Q: 为什么显示"使用模拟数据"? A: 当体彩官方API请求失败时,系统会自动使用模拟数据继续运行,确保程序不会中断。

Q: 如何使用缓存? A: 首次运行时使用 --save-cache 保存数据,后续运行使用 --use-cache 加载缓存数据。

Q: 预测结果是否准确? A: 本预测基于历史数据的统计分析,仅供参考。彩票开奖完全随机,无法预测准确结果。

Q: Windows终端显示乱码怎么办? A: 程序已内置UTF-8输出包装器,应能正常显示中文。如仍有问题,请确保终端编码设置为UTF-8。