2022 FIFAワールドカップ、日本がワールドカップに出場できる確率（2022年2月2日時点）

## はじめに
まず、この記事を書く前に、2022年2月1日にホームで行われた、日本 対 サウジアラビア、日本がサウジアラビアに、2対0で勝ったことにより、カタールへの道がグッと近くなりました。
さて、2022年2月2日時点での、日本のワールドカップへの出場確率はどのくらいか計算してみることにしました。
まずは、アジア3次予選、グループBの2022年2月2日時点の勝ち点を下記に示します。

## アジア3次予選、グループBの勝ち点表

|   |試合数|勝ち数|引き分け数|負け数|得点数|失点数|得失点差|勝ち点|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|サウジアラビア|8|6|1|1|10|5|+5|19|
|日本|8|6|0|2|9|3|+6|18|
|オーストラリア|8|4|3|1|15|6|+9|15|
|オマーン|8|2|2|4|8|10|−2|8|
|中国|8|1|2|5|8|16|−8|5|
|ベトナム|8|1|0|7|7|17|−10|3|

## 2022年3月24日と29日の計6試合をシミュレートするスクリプトを作成する
まだ行われていない試合計6試合をシミュレートして、どのチームがワールドカップに出場できるか試してみます。

試合は1対0で、ホームチームの勝利、0対0で引き分け、0対1でアウェイチームの勝利の3通りを用意します。
実際には2対0や1対1など列挙し出すとキリがありませんが、今回は最小限の勝敗だけを用意します。

## 免責事項
その前に、このスクリプトの実行は自己責任でお願いします。本スクリプトを実行することにより生じるいかなる問題に関しましても、筆者は一切責任を負いません。予めご了承ください。

## 2022年3月24日と29日の計6試合をシミュレートするスクリプトをPythonで作成する
6試合全ての「勝ち、引き分け、負け」パターンを試すスクリプトを下記に掲載します。Brute force的な片っ端から試しているスクリプトなのでツッコミどころ満載ですが、ご愛嬌ということで、目を瞑っていただきたく、よろしくお願いします。

```Python
# -*- coding: utf-8 -*-

import copy

# チーム名の登録
saudi_arabia = 'サウジアラビア'
japan = '日本'.center(len(saudi_arabia), '　')
australia = 'オーストラリア'.center(len(saudi_arabia), '　')
oman = 'オマーン'.center(len(saudi_arabia), '　')
china = '中国'.center(len(saudi_arabia), '　')
vietnam = 'ベトナム'.center(len(saudi_arabia), '　')

# 2022年2月2日時点の勝ち点情報の登録
TEAMS = {saudi_arabia: [10, 5, 19],
        japan: [9, 6, 18],
        australia: [15, 9, 15],
        oman: [8, -2, 8],
        china: [8, -8, 5],
        vietnam: [7, -10, 3]}

# ホームチームが勝った時の関数
def home(fw, teams, team1, team2):
    teams[team1][0] += 1
    teams[team1][1] += 1
    teams[team1][2] += 3
    teams[team2][1] -= 1
    print(f'{team1}x{team2}、{team1}: 勝利')
    fw.write(f'{team1}x{team2}、{team1}: 勝利\n')

# 引き分けた時の関数
def draw(fw, teams, team1, team2):
    teams[team1][2] += 1
    teams[team2][2] += 1
    print(f'{team1}x{team2}、引き分け')
    fw.write(f'{team1}x{team2}、引き分け\n')

# アウェイチームが勝った時の関数
def away(fw, teams, team1, team2):
    teams[team1][1] -= 1
    teams[team2][0] += 1
    teams[team2][1] += 1
    teams[team2][2] += 3
    print(f'{team1}x{team2}、{team2}: 勝利')
    fw.write(f'{team1}x{team2}、{team2}: 勝利\n')

# W杯出場、アジア4次予選、敗退の集計用
RESULTS = {saudi_arabia: [0, 0, 0],
            japan: [0, 0, 0],
            australia: [0, 0, 0],
            oman: [0, 0, 0],
            china: [0, 0, 0],
            vietnam: [0, 0, 0]}

# 2022年3月24日と29日、全6試合の勝敗パターンを配列で登録
matches1 = [home, draw, away]
matches2 = [home, draw, away]
matches3 = [home, draw, away]
matches4 = [home, draw, away]
matches5 = [home, draw, away]
matches6 = [home, draw, away]

# 全6試合の勝敗パターンの総数
TOTAL = len(matches1) * len(matches2) * len(matches3) * len(matches4) * len(matches5) * len(matches6)

# 結果をテキストファイル'qualify.txt'に出力する
with open('qualify.txt', 'w') as fw:
    # 2022年3月24日第一試合
    for match1 in matches1:
        # 2022年3月24日第二試合
        for match2 in matches2:
            # 2022年3月24日第三試合
            for match3 in matches3:
                # 2022年3月29日第一試合
                for match4 in matches4:
                    # 2022年3月29日第二試合
                    for match5 in matches5:
                        # 2022年3月29日第三試合
                        for match6 in matches6:
                            # 2022年2月2日時点の勝ち点情報をディープコピー
                            teams = copy.deepcopy(TEAMS)
                            # 2022年3月24日第一試合、オーストラリア 対 日本
                            match1(fw, teams, australia, japan)
                            # 2022年3月24日第二試合、中国 対 サウジアラビア
                            match2(fw, teams, china, saudi_arabia)
                            # 2022年3月24日第三試合、ベトナム 対 オマーン
                            match3(fw, teams, vietnam, oman)
                            # 2022年3月29日第一試合、日本 対 ベトナム
                            match4(fw, teams, japan, vietnam)
                            # 2022年3月29日第二試合、サウジアラビア 対 オーストラリア
                            match5(fw, teams, saudi_arabia, australia)
                            # 2022年3月29日第三試合、オマーン 対 中国
                            match6(fw, teams, oman, china)

                            # 2022年2月2日時点の勝ち点情報と全6試合の勝敗から、総得点でソートする
                            sorted1 = sorted(teams.items(), key=lambda x:x[1][0], reverse=True)
                            # ソートした結果を得失点差でソートする
                            sorted2 = sorted(sorted1, key=lambda x: x[1][1], reverse=True)
                            # ソートした結果を勝ち点でソートする
                            sorted3 = sorted(sorted2, key=lambda x: x[1][2], reverse=True)

                            for i, team in enumerate(sorted3):
                                if i < 2:
                                    # グループ2位以内はW杯出場
                                    RESULTS[team[0]][0] += 1
                                    print(f'{team[0]}、勝ち点{str(team[1][2]).rjust(2)}: W杯出場')
                                    fw.write(f'{team[0]}、勝ち点{str(team[1][2]).rjust(2)}: W杯出場\n')
                                elif i == 2:
                                    # グループ3位はアジア4次予選
                                    RESULTS[team[0]][1] += 1
                                    print(f'{team[0]}、勝ち点{str(team[1][2]).rjust(2)}: アジア4次予選')
                                    fw.write(f'{team[0]}、勝ち点{str(team[1][2]).rjust(2)}: アジア4次予選\n')
                                else:
                                    # グループ4位以下は敗退
                                    RESULTS[team[0]][2] += 1
                                    print(f'{team[0]}、勝ち点{str(team[1][2]).rjust(2)}: 敗退')
                                    fw.write(f'{team[0]}、勝ち点{str(team[1][2]).rjust(2)}: 敗退\n')
                            print('')
                            fw.write('\n')

    # W杯出場、アジア4次予選、敗退の集計結果を表示
    for k, v in RESULTS.items():
        print(f'{k}: W杯出場 {str(v[0]).rjust(3)}回({v[0]/TOTAL*100:6.2f}%)、'
                f'アジア4次予選 {str(v[1]).rjust(3)}回({v[1]/TOTAL*100:6.2f}%)、'
                f'敗退 {str(v[2]).rjust(3)}回({v[2]/TOTAL*100:6.2f}%)')
        fw.write(f'{k}: W杯出場 {str(v[0]).rjust(3)}回({v[0]/TOTAL*100:6.2f}%)、'
                f'アジア4次予選 {str(v[1]).rjust(3)}回({v[1]/TOTAL*100:6.2f}%)、'
                f'敗退 {str(v[2]).rjust(3)}回({v[2]/TOTAL*100:6.2f}%)\n')
```

## スクリプトの説明
copyはPythonの標準モジュールです。グループBの勝ち点情報の初期化に利用しています。

```Python
import copy
```

グループB、6チームを登録しています。後で見やすいように、最長文字列「サウジアラビア」で空白で埋めてセンタリングしています。

```Python
# チーム名の登録
saudi_arabia = 'サウジアラビア'
japan = '日本'.center(len(saudi_arabia), '　')
australia = 'オーストラリア'.center(len(saudi_arabia), '　')
oman = 'オマーン'.center(len(saudi_arabia), '　')
china = '中国'.center(len(saudi_arabia), '　')
vietnam = 'ベトナム'.center(len(saudi_arabia), '　')
```

2022年2月2日時点の勝ち点情報を登録しています。左から「総得点、得失点差、勝ち点」です。

```Python
# 2022年2月2日時点の勝ち点情報の登録
TEAMS = {saudi_arabia: [10, 5, 19],
        japan: [9, 6, 18],
        australia: [15, 9, 15],
        oman: [8, -2, 8],
        china: [8, -8, 5],
        vietnam: [7, -10, 3]}
```

ホームチーム(team1)が、1対0で勝利した場合の関数です。ホームチームの総得点を+1、得失点差を+1、勝ち点を+3、アウェイチームの得失点差を-1しています。

```Python
# ホームチームが勝った時の関数
def home(fw, teams, team1, team2):
    teams[team1][0] += 1
    teams[team1][1] += 1
    teams[team1][2] += 3
    teams[team2][1] -= 1
    print(f'{team1}x{team2}、{team1}: 勝利')
    fw.write(f'{team1}x{team2}、{team1}: 勝利\n')
```

ホームチームとアウェイチームが、0対0で引き分けた時の関数です。ホームチーム、アウェイチームの勝ち点にそれぞれ+1しています。

```Python
# 引き分けた時の関数
def draw(fw, teams, team1, team2):
    teams[team1][2] += 1
    teams[team2][2] += 1
    print(f'{team1}x{team2}、引き分け')
    fw.write(f'{team1}x{team2}、引き分け\n')
```

アウェイチーム(team2)が、0対1で勝利した場合の関数です。ホームチームの得失点差を-1、アウェイチームの総得点を+1、得失点差を+1、勝ち点を+3しています。

```Python
# アウェイチームが勝った時の関数
def away(fw, teams, team1, team2):
    teams[team1][1] -= 1
    teams[team2][0] += 1
    teams[team2][1] += 1
    teams[team2][2] += 3
    print(f'{team1}x{team2}、{team2}: 勝利')
    fw.write(f'{team1}x{team2}、{team2}: 勝利\n')
```

ワールドカップ出場、アジア4次予選、敗退をそれぞれ集計するための辞書を作成しています。

```Python
# W杯出場、アジア4次予選、敗退の集計用
RESULTS = {saudi_arabia: [0, 0, 0],
            japan: [0, 0, 0],
            australia: [0, 0, 0],
            oman: [0, 0, 0],
            china: [0, 0, 0],
            vietnam: [0, 0, 0]}
```

2022年3月24日と29日、全6試合の勝敗パターンを配列で登録しています。

```Python
# 2022年3月24日と29日、全6試合の勝敗パターンを配列で登録
matches1 = [home, draw, away]
matches2 = [home, draw, away]
matches3 = [home, draw, away]
matches4 = [home, draw, away]
matches5 = [home, draw, away]
matches6 = [home, draw, away]
```

全6試合の勝敗パターンの総数を求めています。

```Python
# 全6試合の勝敗パターンの総数
TOTAL = len(matches1) * len(matches2) * len(matches3) * len(matches4) * len(matches5) * len(matches6)
```

結果をテキストファイル'qualify.txt'として出力しています。

```Python
# 結果をテキストファイル'qualify.txt'に出力する
with open('qualify.txt', 'w') as fw:
```

全6試合をfor文を使用して試しています。

```Python
# 2022年3月24日第一試合
for match1 in matches1:
    # 2022年3月24日第二試合
    for match2 in matches2:
        # 2022年3月24日第三試合
        for match3 in matches3:
            # 2022年3月29日第一試合
            for match4 in matches4:
                # 2022年3月29日第二試合
                for match5 in matches5:
                    # 2022年3月29日第三試合
                    for match6 in matches6:
```

2022年2月2日時点のグループBの勝ち点情報を基にディープコピーしています。

```Python
# 2022年2月2日時点の勝ち点情報をディープコピー
teams = copy.deepcopy(TEAMS)
```

2022年3月24日第一試合〜29日第三試合までの計6試合の「勝ち、引き分け、負け」を試しています。

```Python
# 2022年3月24日第一試合、オーストラリア 対 日本
match1(fw, teams, australia, japan)
# 2022年3月24日第二試合、中国 対 サウジアラビア
match2(fw, teams, china, saudi_arabia)
# 2022年3月24日第三試合、ベトナム 対 オマーン
match3(fw, teams, vietnam, oman)
# 2022年3月29日第一試合、日本 対 ベトナム
match4(fw, teams, japan, vietnam)
# 2022年3月29日第二試合、サウジアラビア 対 オーストラリア
match5(fw, teams, saudi_arabia, australia)
# 2022年3月29日第三試合、オマーン 対 中国
match6(fw, teams, oman, china)
```

2022年2月2日時点の勝ち点情報と全6試合の勝敗から、まず総得点を降順でソートします。その後、得失点を降順でソートして、最後に勝ち点を降順でソートしています。そうすることで、最終的に、勝ち点でソートされた順位を取得できます。勝ち点で並んだ場合、得失点差。得失点差でも並んだ場合、総得点で順位が決まります。

```Python
# 2022年2月2日時点の勝ち点情報と全6試合の勝敗から、総得点でソートする
sorted1 = sorted(teams.items(), key=lambda x:x[1][0], reverse=True)
# ソートした結果を得失点差でソートする
sorted2 = sorted(sorted1, key=lambda x: x[1][1], reverse=True)
# ソートした結果を勝ち点でソートする
sorted3 = sorted(sorted2, key=lambda x: x[1][2], reverse=True)
```

ソートした結果を表示しています。グループ2位以内は、ワールドカップ出場を+1。グループ3位はアジア4次予選を+1。グループ4位以下は敗退を+1して、それぞれの結果を表示しています。

```Python
for i, team in enumerate(sorted3):
    if i < 2:
        # グループ2位以内はW杯出場
        RESULTS[team[0]][0] += 1
        print(f'{team[0]}、勝ち点{str(team[1][2]).rjust(2)}: W杯出場')
        fw.write(f'{team[0]}、勝ち点{str(team[1][2]).rjust(2)}: W杯出場\n')
    elif i == 2:
        # グループ3位はアジア4次予選
        RESULTS[team[0]][1] += 1
        print(f'{team[0]}、勝ち点{str(team[1][2]).rjust(2)}: アジア4次予選')
        fw.write(f'{team[0]}、勝ち点{str(team[1][2]).rjust(2)}: アジア4次予選\n')
    else:
        # グループ4位以下は敗退
        RESULTS[team[0]][2] += 1
        print(f'{team[0]}、勝ち点{str(team[1][2]).rjust(2)}: 敗退')
        fw.write(f'{team[0]}、勝ち点{str(team[1][2]).rjust(2)}: 敗退\n')
print('')
fw.write('\n')
```

最後に、グループB 6チームのワールドカップ出場、アジア4次予選と敗退を集計した結果を表示しています。

```Python
# W杯出場、アジア4次予選、敗退の集計結果を表示
for k, v in RESULTS.items():
    print(f'{k}: W杯出場 {str(v[0]).rjust(3)}回({v[0]/TOTAL*100:6.2f}%)、'
            f'アジア4次予選 {str(v[1]).rjust(3)}回({v[1]/TOTAL*100:6.2f}%)、'
            f'敗退 {str(v[2]).rjust(3)}回({v[2]/TOTAL*100:6.2f}%)')
    fw.write(f'{k}: W杯出場 {str(v[0]).rjust(3)}回({v[0]/TOTAL*100:6.2f}%)、'
            f'アジア4次予選 {str(v[1]).rjust(3)}回({v[1]/TOTAL*100:6.2f}%)、'
            f'敗退 {str(v[2]).rjust(3)}回({v[2]/TOTAL*100:6.2f}%)\n')
```

## 動作確認環境
• MacOS 12.0.1
• Python 3.8.9

## スクリプトの実行結果
実行結果は、下記の通りになりました。グループB 残り6試合の「勝ち、引き分け、負け」の総数は、3の6乗=729通りで、期待通りの結果が返ってきています。

```
サウジアラビア: W杯出場 675回( 92.59%)、アジア4次予選  54回(  7.41%)、敗退   0回(  0.00%)
   　日本   : W杯出場 576回( 79.01%)、アジア4次予選 153回( 20.99%)、敗退   0回(  0.00%)
オーストラリア: W杯出場 207回( 28.40%)、アジア4次予選 522回( 71.60%)、敗退   0回(  0.00%)
  オマーン  : W杯出場   0回(  0.00%)、アジア4次予選   0回(  0.00%)、敗退 729回(100.00%)
  　 中国   : W杯出場   0回(  0.00%)、アジア4次予選   0回(  0.00%)、敗退 729回(100.00%)
  ベトナム  : W杯出場   0回(  0.00%)、アジア4次予選   0回(  0.00%)、敗退 729回(100.00%)
```

## グループB 残り6試合の考察
グループB 6チームのワールドカップ・アジア3次予選を考察すると、以下のようなことが言えます。

- ワールドカップに出場できるのは上位3チーム、サウジアラビア、日本とオーストラリアに絞られている。
- 2022年2月2日時点で、勝ち点19とトップのサウジアラビアが、ワールドカップ出場確率、92.59%となっている。
- 勝ち点18の2位の日本が、ワールドカップ出場確率、79.01%となっている。
- 勝ち点15の3位のオーストラリアが、ワールドカップ出場確率、28.40%となっている。

どういう状態の時に、日本がアジア4次予選にまわるか見てみよう。

日本が勝ち点18のままで、アジア4次予選にまわる一例である。オーストラリアが日本に勝利し、日本がベトナムが負け、サウジアラビアがオーストラリアに勝利した場合、日本がアジア4次予選にまわることになる。

```
オーストラリアx   　日本   、オーストラリア: 勝利
  　 中国   xサウジアラビア、  　 中国   : 勝利
  ベトナム  x  オマーン  、  ベトナム  : 勝利
   　日本   x  ベトナム  、  ベトナム  : 勝利
サウジアラビアxオーストラリア、サウジアラビア: 勝利
  オマーン  x  　 中国   、  オマーン  : 勝利

サウジアラビア、勝ち点22: W杯出場
オーストラリア、勝ち点18: W杯出場
   　日本   、勝ち点18: アジア4次予選
  オマーン  、勝ち点11: 敗退
  　 中国   、勝ち点 9: 敗退
  ベトナム  、勝ち点 8: 敗退
```

日本が勝ち点19にした状態で、アジア4次予選にまわる一例である。オーストラリアが日本に勝利し、日本とベトナムが引き分け、サウジアラビアとオーストラリアが引き分けた場合、日本がアジア4次予選にまわることになる。

```
オーストラリアx   　日本   、オーストラリア: 勝利
  　 中国   xサウジアラビア、  　 中国   : 勝利
  ベトナム  x  オマーン  、  ベトナム  : 勝利
   　日本   x  ベトナム  、引き分け
サウジアラビアxオーストラリア、引き分け
  オマーン  x  　 中国   、  オマーン  : 勝利

サウジアラビア、勝ち点20: W杯出場
オーストラリア、勝ち点19: W杯出場
   　日本   、勝ち点19: アジア4次予選
  オマーン  、勝ち点11: 敗退
  　 中国   、勝ち点 8: 敗退
  ベトナム  、勝ち点 7: 敗退
```

日本が勝ち点21に伸ばした状態でも、アジア4次予選にまわる場合がある。その一例である。オーストラリアが日本に勝利し、日本がベトナムに勝利し、オーストラリアがサウジアラビアに勝利した場合、日本がアジア4次予選にまわることになる。

```
オーストラリアx   　日本   、オーストラリア: 勝利
  　 中国   xサウジアラビア、サウジアラビア: 勝利
  ベトナム  x  オマーン  、  ベトナム  : 勝利
   　日本   x  ベトナム  、   　日本   : 勝利
サウジアラビアxオーストラリア、オーストラリア: 勝利
  オマーン  x  　 中国   、  オマーン  : 勝利

サウジアラビア、勝ち点22: W杯出場
オーストラリア、勝ち点21: W杯出場
   　日本   、勝ち点21: アジア4次予選
  オマーン  、勝ち点11: 敗退
  ベトナム  、勝ち点 6: 敗退
  　 中国   、勝ち点 5: 敗退
```

逆に、日本が勝ち点20にした場合は、必ずワールドカップ出場権を獲得する。その一例である。オーストラリアと日本が引き分け、日本がベトナムと引き分け、オーストラリアがサウジアラビア勝利した場合でも、オーストラリアの勝ち点は19で日本の勝ち点20には届かない。

```
オーストラリアx   　日本   、引き分け
  　 中国   xサウジアラビア、サウジアラビア: 勝利
  ベトナム  x  オマーン  、  ベトナム  : 勝利
   　日本   x  ベトナム  、引き分け
サウジアラビアxオーストラリア、オーストラリア: 勝利
  オマーン  x  　 中国   、  オマーン  : 勝利

サウジアラビア、勝ち点22: W杯出場
   　日本   、勝ち点20: W杯出場
オーストラリア、勝ち点19: アジア4次予選
  オマーン  、勝ち点11: 敗退
  ベトナム  、勝ち点 7: 敗退
  　 中国   、勝ち点 5: 敗退
```

上記の考察結果から、日本がワールドカップ出場権を獲得するには

- 日本がオーストラリアに勝つこと。勝てば、即ワールドカップ出場権を獲得できる。最低でも引き分けること。
- 日本がオーストラリアと引き分けた場合、ベトナムに引き分け以上で、ワールドカップ出場権を獲得できる。
- もし、日本がオーストラリアに負けた場合、日本がベトナムに勝利したとしても、オーストラリアがサウジアラビアに勝利したら得失点差で、日本がアジア4次予選にまわることになる。

## しかし、残り6試合、全て「勝ち、引き分け、負け」を試すのは、現実味がない
例えば、サウジアラビアが中国に負けるか？と言った点である。同様に、日本がベトナムに負けるか？と言った点もである。これら2試合をサウジアラビアと日本が負けないように、スクリプトを小細工する。
2022年3月24日の第二試合、matches2の中国のホームゲームで、ホームチームが勝った時の関数homeを省く。同様に29日の第一試合、matches4の日本のホームゲームからアウェイチームが勝った時の関数awayを省く。

```Python
# 2022年3月24日と29日、全6試合の勝敗パターンを配列で登録
matches1 = [home, draw, away]
matches2 = [draw, away]
matches3 = [home, draw, away]
matches4 = [home, draw]
matches5 = [home, draw, away]
matches6 = [home, draw, away]
```

上記のように編集したスクリプトを実行した結果を下記に示す。
サウジアラビアが、中国に負けない。日本がベトナムに負けない。という条件を入れたことで、サウジアラビアのワールドカップ出場確率が、92.59% → 97.22%、日本のW杯出場確率が、79.01% → 86.11%に上昇している。

```
サウジアラビア: W杯出場 315回( 97.22%)、アジア4次予選   9回(  2.78%)、敗退   0回(  0.00%)
   　日本   : W杯出場 279回( 86.11%)、アジア4次予選  45回( 13.89%)、敗退   0回(  0.00%)
オーストラリア: W杯出場  54回( 16.67%)、アジア4次予選 270回( 83.33%)、敗退   0回(  0.00%)
  オマーン  : W杯出場   0回(  0.00%)、アジア4次予選   0回(  0.00%)、敗退 324回(100.00%)
  　 中国   : W杯出場   0回(  0.00%)、アジア4次予選   0回(  0.00%)、敗退 324回(100.00%)
  ベトナム  : W杯出場   0回(  0.00%)、アジア4次予選   0回(  0.00%)、敗退 324回(100.00%)
```

## 更に、都合よくスクリプトを操作してみる
アウェイのサウジアラビアが必ず中国に勝つ。ホームの日本が必ずベトナムに勝つ。という条件を入れて試してみる。勝負事に絶対はありませんが、お遊びのシミュレーションということで、よろしくお願いします。

```Python
# 2022年3月24日と29日、全6試合の勝敗パターンを配列で登録
matches1 = [home, draw, away]
matches2 = [away]
matches3 = [home, draw, away]
matches4 = [home]
matches5 = [home, draw, away]
matches6 = [home, draw, away]
```

上記のように編集したスクリプトを実行した結果を下記に示す。
サウジアラビアのワールドカップ出場確率が、100.00%となった。日本のワールドカップ出場確率が、86.11% → 88.89%に僅かに上昇しているが、ベトナムに勝利しても、あまり期待はできないようだ。

```
サウジアラビア: W杯出場  81回(100.00%)、アジア4次予選   0回(  0.00%)、敗退   0回(  0.00%)
   　日本   : W杯出場  72回( 88.89%)、アジア4次予選   9回( 11.11%)、敗退   0回(  0.00%)
オーストラリア: W杯出場   9回( 11.11%)、アジア4次予選  72回( 88.89%)、敗退   0回(  0.00%)
  オマーン  : W杯出場   0回(  0.00%)、アジア4次予選   0回(  0.00%)、敗退  81回(100.00%)
  　 中国   : W杯出場   0回(  0.00%)、アジア4次予選   0回(  0.00%)、敗退  81回(100.00%)
  ベトナム  : W杯出場   0回(  0.00%)、アジア4次予選   0回(  0.00%)、敗退  81回(100.00%)
```

## 最後に

2022年2月2日時点での、日本のワールドカップへの出場確率がどのくらいか、Pythonスクリプトを作成して試してみました。
グループB 残り6試合の考察でも述べた通り、日本がワールドカップに出場するためには、2022年3月24日のアウェイ戦、オーストラリアに勝ち点3を与えないことです。ここで、オーストラリアに負けてしまうと、いくら最終戦29日のベトナム戦に勝利しても、オーストラリアがサウジアラビアとの試合でオーストラリアが勝利すると、日本がアジア4次予選にまわることになってしまいます。
意外にも、24日のアウェイ戦、オーストラリアに引き分けた場合、最終戦29日のベトナム戦に引き分け以上で、ワールドカップに出場できます。大事なことは、ワールドカップの出場を争っている相手に、勝ち点3を与えないということのようです。
最後まで、この記事を読んでいただき、ありがとうございました。