Python计算越南出线概率

知乎上已经有人计算国足出线概率了:国足出线概率仅为0.01%你怎么看? - 量化调酒师的回答 - 知乎,那么我计算一下越南吧,目前权威机构给出的越南出线概率和国足一样都是0.00%。

Python计算越南出线概率_第1张图片
请看右下角,这是洲际附加赛抽签之前的,亚洲抽到南美后国足概率也是0.00%了。

我们知道,在仅剩4轮、落后小组第三11分的情况下,越南只有4战全胜才有理论上的出线希望。即使越南4战全胜也不可能获得小组前二直通世界杯,因为日本(12分,第二)和澳大利亚(11分,第三)还有一场直接对话,无论比赛结果如何,第二的分数都会高于12分,所以越南唯一可能出线的机会是获得小组第三。

Python计算越南出线概率_第2张图片

下面就用Python计算一下越南如果4战全胜,获得小组第三概率有多大。(我的代码有点暴力,望大佬指教)

game_result={3:0,1:1,0:3}#比赛结果的积分
scores={'沙特':16,'日本':12,'澳大利亚':11,'阿曼':7,'中国':5,'越南':12}#目前的积分榜,越南其实是0分,但是假设越南4战全胜
case_sum=0#越南小组第三的情况计数
for strb in game_result:#遍历除越南之外的8场比赛结果
    scores['沙特']+=strb
    scores['日本']+=game_result[strb]
    for stad in game_result:
        scores['沙特'] += stad
        scores['澳大利亚'] += game_result[stad]
        for stam in game_result:
            scores['沙特'] += stam
            scores['阿曼'] += game_result[stam]
            for stzg in game_result:
                scores['沙特'] += stzg
                scores['中国'] += game_result[stzg]
                for rbad in game_result:
                    scores['日本'] += rbad
                    scores['澳大利亚'] += game_result[rbad]
                    for rbzg in game_result:
                        scores['日本'] += rbzg
                        scores['中国'] += game_result[rbzg]
                        for adam in game_result:
                            scores['澳大利亚'] += adam
                            scores['阿曼'] += game_result[adam]
                            for amzg in game_result:
                                scores['阿曼'] += amzg
                                scores['中国'] += game_result[amzg]
                                sorted_scores=sorted(scores.items(), key=lambda x:x[1], reverse=True)#对积分榜排序
                                if sorted_scores[2][1]==12:#小组第三为12分的情况
                                    print(strb,stad,stam,stzg,rbad,rbzg,adam,amzg)#比赛结果
                                    print(sorted_scores)#积分榜
                                    case_sum+=1
                                scores['阿曼'] -= amzg#因为对同一个积分榜操作,操作完需要还原
                                scores['中国'] -= game_result[amzg]
                            scores['澳大利亚'] -= adam
                            scores['阿曼'] -= game_result[adam]
                        scores['日本'] -= rbzg
                        scores['中国'] -= game_result[rbzg]
                    scores['日本'] -= rbad
                    scores['澳大利亚'] -= game_result[rbad]
                scores['沙特'] -= stzg
                scores['中国'] -= game_result[stzg]
            scores['沙特'] -= stam
            scores['阿曼'] -= game_result[stam]
        scores['沙特'] -= stad
        scores['澳大利亚'] -= game_result[stad]
    scores['沙特'] -= strb
    scores['日本'] -= game_result[strb]

print("假设十二强赛剩下比赛所有结果是随机的")
print("越南4战全胜获得小组第三(包括并列)的情况有"+str(case_sum)+"种")
print("越南4战全胜获得小组第三(包括并列)的概率"+str(case_sum/3**8))
print("越南比赛结果随机的情况下获得小组第三(包括并列)的概率"+str(case_sum/3**12))

结果:

假设十二强赛剩下比赛所有结果是随机的
越南4战全胜获得小组第三(包括并列)的情况有669种
越南4战全胜获得小组第三(包括并列)的概率 0.10196616369455876
越南比赛结果随机的情况下获得小组第三(包括并列)的概率 0.001258841527093318

即使越南4战全胜而且净胜球超过所有同积12分的对手,越南的出线概率也只有10.2%,而且还是假设其他比赛结果随机的情况,事实上沙日澳大概率会虐国足和阿曼,不会有太多12分也能排到第三的情况。所有比赛随机的出线概率就更不忍直视了。即使出线后还要打另一组第三和南美球队,凶多吉少。

所有情况就不列出了,可以看几个例子:

[('沙特', 19), ('日本', 19), ('澳大利亚', 12), ('越南', 12), ('阿曼', 11), ('中国', 10)]
[('沙特', 23), ('日本', 19), ('越南', 12), ('澳大利亚', 11), ('阿曼', 11), ('中国', 9)]
[('沙特', 26), ('澳大利亚', 15), ('日本', 12), ('越南', 12), ('中国', 10), ('阿曼', 9)]

你可能感兴趣的:(Python,python,算法,概率论,数学,开发语言)