返回模拟器

方法论

模拟器如何工作,这里不藏秘密。核心方法是 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