世界杯哪个国家胜率大?
这个题目实在是太诱人了,让人忍不住想要把答案分享给各位球迷朋友,但事实是,我们根本不可能知道谁能最终夺冠。我们能做出的最大猜测,就是在已经进行的91场比赛的基础上,通过计算球队的获胜概率来预测最后的结果。 为此,我利用python写了下面这个小程序,通过模拟世界杯决赛阶段比赛(共72场)中各个队伍之间的胜负关系来计算出各队的胜率。
注意这里只考虑了世界杯决赛阶段的比赛(一共72场),因此不考虑预选赛、小组赛等等。这样处理的好处是在于我们可以忽略球队状态、场外因素等等影响比赛结果的因素,只关注球队本身的能力。当然这样做的坏处就是可能得到的结论和现实有偏差,更确切地说是我们无法得到最接近现实的结论。不过我认为这样的偏差对于足球这种相对客观的比赛来说是可以接受的。 在我的程序里,假设每支队伍都是相同的级别,且拥有相同的可能性,那么计算的步骤就非常简单了——只需要反复模拟72次单循环的比赛,然后统计胜场的次数就行了。 为了减少极端情况出现的可能,我们在每场比赛前都会让电脑随机为两支球队挑选一名中立裁判员,然后在5个判罚节点上让电脑分别记下两队获得利益(点球/任意球/手抛球发球/界外球)的次数。由于每个裁判员在每一届世界杯上所担任的主裁判场次是有上限的[1],所以我们已经排除了主裁对比赛结果产生影响的可能,这样一来,即便是我们假设的错误,也必然是非常小且不会对结果造成重大影响的错误。
我使用perl语言编写了这个小程序。因为我对perl的语言特性比较熟悉,并且之前编写过类似的小程序用于预测欧冠半决赛(详见我之前的答案),所以这次我选择继续使用perl来编写代码并运行模拟。
在编程的过程中,我遇到的一个难题是如何量化“运气”的作用。显然,一支球队越有可能获得点球等有利判罚的机会就越能体现这支球队的实力,反之,一支球队越有可能遭受不利判罚的影响说明这支球队运气越差。如果我们将所有可能出现的判罚情况都列出并进行定量分析的话,就能很好地将“运气”对球队结果带来的影响去除,最终得到比较准确的结果。但是这样的话,我们就没有办法把每一个参赛队的结果都列出来了,而只有所有可能的结果集合才能反映真实情况。所以在这篇回答里,我尽可能地把每一个参赛队的赛程重复多次以减小误差。
在所有的计算中,我们设定了两个常数——一个代表球队自身能力的大小,另一个代表“运气”好坏的程度。当计算某一参赛队的胜率时,我们把这两个参数加到程序里设定的初始值上再反复进行模拟就可以了。 下面是程序的部分输出,其中第8行显示了最终结果: 根据以上数据,我们最终可以得到每个球队获胜的概率。 在这里,我们假设每个球队都拥有相同的参赛次数(即每支球队参加的世界杯决赛阶段比赛次数均为72场),实际上一些参赛次数多的球队比参赛次数少的球队要幸运得多,这会导致这些球队的最终结果偏向乐观,而一些参赛次数少的球队最终结果会偏向悲观。
如果我们给每个球队赋予不同的权值,就可以对每个球队的最终结果进行调整。比如我们对胜利次数最多的球队赋予最大的权值,这样我们就可以把最终的胜率调整为最接近真实结果的数值。