这是一个用真实开奖数据持续检验"选号策略是否真的比随机数强"的公开实验平台——不是预测工具,是概率科普实验。
本项目为统计与算法科普实验,不提供售彩、代购、充值、返利等任何服务;页面上出现的任何号码都只用于回测展示,不构成购彩建议。彩票开奖是独立随机事件,历史数据不影响未来结果——这句话本身就是本实验想反复验证、而不是想反驳的前提。
历史开奖数据来自 gudaoxuri/lottery_history(GitHub 公开镜像),当前版本共 251 期(25005 ~ 26104)。诚实说明:这个仓库名称在公开搜索里暂时没能被独立核实——不确认它是否真实存在、是否还在维护,按方案的风险对策,这属于"未经验证的第三方数据源",在核实清楚或替换为已验证来源之前,本页数字仅供算法/统计方法本身的演示,数据来源这一环还不能算已尽职核实。这也是 V0 版本已知的限制:还没有接入更长的历史区间,也还没有做多数据源交叉核对——按方案规则,一旦发现数据源不一致,后续版本会暂停自动发布并报警,而不是随便选一个继续跑。
回测采用 Walk-Forward 滚动预测:预测第 t+1 期时,策略只能看到第 1~t 期的数据,绝不使用未来信息。本版本 minTrainSize = 100,即前 100 期只作为初始训练数据,从第 101 期开始才正式计入回测成绩,实际参与评分的有 151 期。
随机基准和蒙特卡洛模拟都使用「期号 + 策略名」做种子的伪随机数,保证同一份数据永远得到同一份排行榜——回测模式下完全不使用 Math.random()。
三个策略:随机基准(完全不看历史,仅作对照)、热号(近50期出现频率最高的号码)、冷号(遗漏期数最长的号码)。理论期望值 1.0909 是红球 33 选 6 在均匀随机假设下的数学期望(6 × 6/33),独立于任何策略。
| 策略 | 均命中(红) | 理论期望 | 95% 置信区间 | 蓝球命中率 | 跑赢随机分布 | ≥4/≥5/6红次数 | 配对检验显著 |
|---|---|---|---|---|---|---|---|
| 随机基准 | 1.0596 | 1.0909 | [0.933, 1.186] | 4.0% (理论 6.3%) | 34.1% | 0 / 0 / 0 | 否 |
| 热号 | 1.1987 | 1.0909 | [1.062, 1.335] | 4.6% (理论 6.3%) | 93.9% | 1 / 0 / 0 | 否 |
| 冷号 | 0.9735 | 1.0909 | [0.841, 1.106] | 5.3% (理论 6.3%) | 4.6% | 1 / 0 / 0 | 否 |
随机基准:均命中 1.0596(理论期望 1.0909)。它的表现落在随机分布的中段(跑赢 34.1% 的随机策略),和"随便选"没有可辨识的差别。
热号:均命中 1.1987(理论期望 1.0909)。本期它跑赢了 93.9% 的独立随机策略,看起来很唬人——但这本质上只是恰好落在了随机波动分布里较高的一侧,配对差值检验并未达到统计显著。按照本站的北极星原则:没有通过盲测之前,不能说它"有效"。
冷号:均命中 0.9735(理论期望 1.0909)。本期它只跑赢了 4.6% 的独立随机策略,表现落后于大多数随机对照——这同样只是正常的随机波动,不代表这个策略"更差",样本量还太小,不足以下结论。
上一节的排行榜是训练集、验证集、盲测集合并在一起算出来的整体成绩——这正是 V0 版本"这是开发集成绩,不是盲测成绩"的局限。从这一版开始,回测数据被切成三段固定期号区间,边界写死,不随以后追加新数据而移动:
关于当前 30 期盲测集的诚实说明:这是这个项目第一次跑盲测,样本量还很小,任何一个策略在这里的表现——无论好看还是难看——统计上都不可靠,只是"账本翻开的第一页"。它的意义不在于现在这个数字,而在于:从今往后,"盲测集"和"开发集"会被严格分开展示,不会因为开发集算出来的数字好看,就把它包装成盲测结论。
| 策略 | 开发集(训练+验证,第25105~26074期) | 盲测集(第26075~26104期) | ||||
|---|---|---|---|---|---|---|
| 均命中(红) | 95% CI | 跑赢随机分布 | 均命中(红) | 95% CI | 跑赢随机分布 | |
| 随机基准 | 1.0826 | [0.936, 1.229] | 47.7% | 0.9667 | [0.727, 1.206] | 25.1% |
| 热号 | 1.1818 | [1.026, 1.338] | 89.4% | 1.2667 | [0.986, 1.548] | 88.1% |
| 冷号 | 0.9421 | [0.798, 1.086] | 3.1% | 1.1000 | [0.770, 1.430] | 55.7% |
随机基准:盲测集里它落在随机分布中段(跑赢 25.1%),和随手选一注没有可辨识的差别。
热号:盲测集里它跑赢了 88.1% 的独立随机策略——看起来亮眼,但样本只有 30 期,这个量级的波动完全在随机噪声范围内。按北极星原则:这不构成"有效"的证据,只是给这个策略记上了它盲测账本的第一笔。
冷号:盲测集里它落在随机分布中段(跑赢 55.7%),和随手选一注没有可辨识的差别。
只是一个直观的"最近手感"数字,不做置信区间、不做显著性判断——短期波动是这类项目里最容易被误读成"策略突然变强/变弱"的地方,这里刻意不给任何结论性文案。
| 策略 | 近10期均命中 | 近30期均命中 | 近100期均命中 |
|---|---|---|---|
| 随机基准 | 1.0000 | 0.9667 | 1.0900 |
| 热号 | 1.3000 | 1.2667 | 1.2400 |
| 冷号 | 0.8000 | 1.1000 | 1.0000 |
拖动下面三个滑块,实时生成一组"加权策略"号码——权重只决定热号频率 / 冷号遗漏 / 随机扰动三者在打分里的相对占比,同一组权重 + 同一份历史数据,永远算出同一组号码,不是每次刷新都变的抽奖。
刻意的设计:你可以随便拖动滑块,把下面的"历史回测成绩(开发集)"调到很好看——这正是本节想让你亲手体验的东西:只要允许反复调参、挑一个好看的数字,几乎总能"调"出一个看起来不错的策略,这不代表你发现了规律,只是数据窥探的一种用户端形式。真正说明问题的是下面被默认隐藏的盲测成绩——一段调参过程中始终看不到、拿不来调整的历史区间,点击按钮才会揭晓。
以上三个数字仅供娱乐——它们是你可以一直看着、反复调参数改进的"开发集"成绩,不作为策略有效性的证据。
这才是相对公平的检验——你调参时完全看不到这段区间的表现。样本量还很小,任何数字(好看或难看)都不构成"有效"或"无效"的结论,只是诚实地把两个口径分开摆出来。
假设从第一次能预测的那一期起,每期都固定花 2 元买一注当前权重算出来的号码,按官方奖级规则结算(一/二等奖用历史近似平均值估算,非精算数据)。这条曲线接的是开发集+盲测集的完整时间线——钱不需要防"数据窥探",展示它只是想把"长期负期望"从一句话变成一条看得见往下走的线。
每个策略"累计平均命中数"随回测期数推进的变化过程。虚线是理论期望值——不是说曲线一定会贴上去,而是长期来看,样本均值和理论期望之间的差异应当落在正常波动范围内,而不是持续、系统性地偏离。
固定住真实开奖序列不变,生成 5000 条相互独立的"随机选号策略",让它们都跑一遍同样的 Walk-Forward 流程,得到下面这条经验分布(均值 1.0916,标准差 0.0696)。三条虚线标出了随机基准、热号、冷号各自的均命中数落在分布里的位置——这比单纯说"跑赢了多少随机策略"更直观:如果一个策略的位置和随机基准挤在分布中间的同一堆里,那它就没有跳出"运气"的范畴。
假设每期固定买 1 注(2 元),按官方奖级规则结算,一二等奖用历史近似平均值估算(不是精确的奖池分配结果)。这条曲线不是这个项目的重点结论,只是把"长期负期望"从一个抽象数字变成一条看得见的曲线。
一/二等奖按历史近似平均值估算,非官方精算数据,仅用于示意长期负期望现象。
这一版加上了"我的策略"权重滑块和对应的资金曲线,把开发集/盲测集的分离从"排行榜上的一张表"变成了用户可以亲手体验的交互。还没有做的,留给下一版:
gudaoxuri/lottery_history 在公开搜索里没能找到对应仓库,无法确认它是否真实存在、是否还在维护。这是方案风险表里"抓取脚本里的 API/仓库地址是占位符或已失效"这一条本身。在核实清楚之前,不建议接入下面这条自动化管道。