方法论
模拟器如何工作,这里不藏秘密。核心方法是 ELO + 泊松进球 + 蒙特卡洛模拟,并用纯 TypeScript 从零实现。
ELO 评分
我们使用 eloratings.net 的国家队 ELO,而不是 FIFA 排名。ELO 是一种类似国际象棋的递归评分系统,会在每场国际比赛后更新,更能反映近期强弱。
胜率计算采用逻辑斯蒂 ELO 模型:
We = 1 / (10^(-dr / 400) + 1)
dr = ELO 差值;若美国、墨西哥、加拿大在小组赛主场作战,则额外加 100。
进球模型
每场比赛中,两队进球数分别从独立泊松分布抽样。参数 λ 代表预期进球,受 ELO 差影响:
λ_team = clamp(1.30 + 0.18 × (ELO_team − ELO_opp + home_bonus) / 100, 0.15, 6.0) goals ~ Poisson(λ_team)
BASE = 1.30,代表近几届世界杯每队平均进球;ALPHA = 0.18,代表 ELO 差对进球期望的敏感度。λ 会限制在 [0.15, 6.0] 区间,避免分布失真。
近期状态
基础 ELO 更新较慢。为了捕捉过去一年内的实力变化,我们加入 12 个月 ELO 变化的额外修正,并设置上限,避免短期波动过度影响结果。
ELO_effective = ELO + clamp(0.20 × (ELO - 一年前 ELO), ±150)
主场优势
美国、墨西哥和加拿大在小组赛阶段享有主场优势。模型会在这些比赛中为东道主增加 100 ELO。
伤停与停赛
每名缺席球员都会按重要性降低球队有效 ELO。重要性由市场价值和位置权重共同估算。
criticality = 0.8 × (value_M€ / 150) + 0.2 × (pos_mult - 1) / 0.5 player_penalty = -75 × criticality team_penalty = 缺席球员惩罚之和,封顶 -150 ELO
位置权重:门将 1.5,中卫 1.3,边后卫/后腰/中场 1.1,前场球员 1.0。数据来自 transfermarkt 的伤停标记。
加时后的体能影响
淘汰赛中,如果球队通过加时或点球晋级,下一场会受到轻微体能惩罚,尤其在四分之一决赛到半决赛之间更明显。
小组赛
12 个小组,每组 4 队,共 72 场比赛。积分规则为胜 3、平 1、负 0。每组前 2 名以及 8 个成绩最好的小组第三晋级 32 强。
淘汰赛
32 强、16 强、8 强、半决赛、三四名决赛和决赛。如果 90 分钟战平,将进入点球模型。
rate(team) = (点球大战胜场 + 10 × 0.5) / (点球大战次数 + 10) P(A 点球获胜) = rate(A) / (rate(A) + rate(B))
点球模型使用历史点球大战数据,并通过贝叶斯收缩避免样本过少带来的极端估计。
最佳小组第三的落位参考 FIFA 规则,并在模型中做了近似处理。
蒙特卡洛模拟
你可以运行 1K、10K、50K 或 100K 次完整赛事模拟。每次模拟相互独立,最终概率来自相对频率。
置信区间
每个概率都是 N 次试验上的伯努利估计。95% 区间使用 Wilson score,相比普通 Wald 区间更稳定。
center = (p + z²/2N) / (1 + z²/N) half = z · sqrt(p(1-p)/N + z²/4N²) / (1 + z²/N) lo, hi = center ± half,z = 1.96
性能
模拟引擎使用纯 TypeScript、xoshiro128** 随机数生成器和 Knuth 泊松采样。100K 次模拟通常可在浏览器 Web Worker 中数秒完成。
合理性检查
- 所有球队夺冠概率合计为 100.000%
- 场均进球约 2.6,符合世界杯历史区间
- 前五热门与主流市场共识大致一致
模型没有覆盖什么
模型不会预测临场状态、教练更替、比赛日突发因素,也不会为了让结果看起来更“合理”而手动修正异常剧本。
数据来源
源代码
模拟器代码为开源项目。
kmanus88/worldcup2026
