Lottery Prediction

by LeeX852

skill

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

Skill Details

Repository Files

14 files in this skill directory


name: lottery-prediction description: 根据往期体彩大乐透数据,预测本期大乐透5注号码

大乐透预测技能

技能名称

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。

Related Skills

Attack Tree Construction

Build comprehensive attack trees to visualize threat paths. Use when mapping attack scenarios, identifying defense gaps, or communicating security risks to stakeholders.

skill

Grafana Dashboards

Create and manage production Grafana dashboards for real-time visualization of system and application metrics. Use when building monitoring dashboards, visualizing metrics, or creating operational observability interfaces.

skill

Matplotlib

Foundational plotting library. Create line plots, scatter, bar, histograms, heatmaps, 3D, subplots, export PNG/PDF/SVG, for scientific visualization and publication figures.

skill

Scientific Visualization

Create publication figures with matplotlib/seaborn/plotly. Multi-panel layouts, error bars, significance markers, colorblind-safe, export PDF/EPS/TIFF, for journal-ready scientific plots.

skill

Seaborn

Statistical visualization. Scatter, box, violin, heatmaps, pair plots, regression, correlation matrices, KDE, faceted plots, for exploratory analysis and publication figures.

skill

Shap

Model interpretability and explainability using SHAP (SHapley Additive exPlanations). Use this skill when explaining machine learning model predictions, computing feature importance, generating SHAP plots (waterfall, beeswarm, bar, scatter, force, heatmap), debugging models, analyzing model bias or fairness, comparing models, or implementing explainable AI. Works with tree-based models (XGBoost, LightGBM, Random Forest), deep learning (TensorFlow, PyTorch), linear models, and any black-box model

skill

Pydeseq2

Differential gene expression analysis (Python DESeq2). Identify DE genes from bulk RNA-seq counts, Wald tests, FDR correction, volcano/MA plots, for RNA-seq analysis.

skill

Query Writing

For writing and executing SQL queries - from simple single-table queries to complex multi-table JOINs and aggregations

skill

Pydeseq2

Differential gene expression analysis (Python DESeq2). Identify DE genes from bulk RNA-seq counts, Wald tests, FDR correction, volcano/MA plots, for RNA-seq analysis.

skill

Scientific Visualization

Meta-skill for publication-ready figures. Use when creating journal submission figures requiring multi-panel layouts, significance annotations, error bars, colorblind-safe palettes, and specific journal formatting (Nature, Science, Cell). Orchestrates matplotlib/seaborn/plotly with publication styles. For quick exploration use seaborn or plotly directly.

skill

Skill Information

Category:Skill
Last Updated:1/25/2026