2022 FIFAワールドカップ、日本が決勝トーナメントに進出できる確率（2022年11月23日時点）

## はじめに
まず、この記事を書く前に、2022年11月23日にカタール、ハリーファ国際スタジアムで行われた、ドイツ 対 日本、日本がドイツに、2対1で勝ったことにより、決勝トーナメントに進出できる確率がグッと大きくなりました。
さて、2022年11月23日時点での、日本の決勝トーナメントに進出できる確率はどのくらいか計算してみることにしました。以前投稿した[2022 FIFAワールドカップ、日本がワールドカップに出場できる確率（2022年2月2日時点）](https://qiita.com/eclipse-hunter-usa/items/b80646e46b5761c5a84d)はこちら。
まずは、2022 FIFAワールドカップ、グループEの2022年11月23日時点の勝ち点を下記に示します。

## 2022 FIFAワールドカップ、グループEの勝ち点表

|   |試合数|勝ち数|引き分け数|負け数|得点数|失点数|得失点差|勝ち点|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|スペイン|1|1|0|0|7|0|+7|3|
|日本|1|1|0|0|2|1|+1|3|
|ドイツ|1|0|0|1|1|2|−1|0|
|コスタリカ|1|0|0|1|0|7|−7|0|

## 2022年11月27日と12月1日の計4試合をシミュレートするスクリプトを作成する
まだ行われていない試合計4試合をシミュレートして、どのチームが決勝トーナメントに進出できるか試してみます。

試合は

- 1対0でチームＡの勝利
- 0対0で引き分け
- 0対1でチームＢの勝利

の3通りを用意します。
実際には2対0や1対1など列挙し出すとキリがありませんが、今回は最小限の勝敗だけを用意します。

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

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

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

import copy

# チーム名の登録
spain = 'スペイン'.center(5, '　')
japan = '日本'.center(5, '　')
germany = 'ドイツ'.center(5, '　')
costa_rica = 'コスタリカ'

# 2022年11月23日時点の勝ち点情報の登録
TEAMS = {spain: [7, 7, 3],
        japan: [2, 1, 3],
        germany: [1, -1, 0],
        costa_rica: [0, -7, 0]}

# チームＡが勝った時の関数
def team_a(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 team_b(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')

# 決勝トーナメント進出、グループリーグ敗退の集計用
RESULTS = {spain: [0, 0, 0],
            japan: [0, 0, 0],
            germany: [0, 0, 0],
            costa_rica: [0, 0, 0]}

# 2022年11月27日と12月1日、全4試合の勝敗パターンを配列で登録
matches1 = [team_a, draw, team_b]
matches2 = [team_a, draw, team_b]
matches3 = [team_a, draw, team_b]
matches4 = [team_a, draw, team_b]

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

# 結果をテキストファイル'group-stage.txt'に出力する
with open('group-stage.txt', 'w') as fw:
    # 2022年11月27日第一試合
    for match1 in matches1:
        # 2022年11月27日第二試合
        for match2 in matches2:
            # 2022年12月1日第一試合
            for match3 in matches3:
                # 2022年12月1日第二試合
                for match4 in matches4:
                    # 2022年11月27日時点の勝ち点情報をディープコピー
                    teams = copy.deepcopy(TEAMS)
                    # 2022年11月27日第一試合、日本 対 コスタリカ
                    match1(fw, teams, japan, costa_rica)
                    # 2022年11月27日第二試合、スペイン 対 ドイツ
                    match2(fw, teams, spain, germany)
                    # 2022年12月1日第一試合、日本 対 スペイン
                    match3(fw, teams, japan, spain)
                    # 2022年12月1日第二試合、コスタリカ 対 ドイツ
                    match4(fw, teams, costa_rica, germany)

                    # 2022年11月23日時点の勝ち点情報と全4試合の勝敗から、総得点でソートする
                    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位以内は決勝トーナメント進出
                            RESULTS[team[0]][0] += 1
                            print(f'{team[0]}、勝ち点{str(team[1][2]).rjust(2)}: 決勝トーナメント進出')
                            fw.write(f'{team[0]}、勝ち点{str(team[1][2]).rjust(2)}: 決勝トーナメント進出\n')
                        else:
                            # グループ3位以下はグループリーグ敗退
                            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')

    # 決勝トーナメント進出、アジア4次予選、敗退の集計結果を表示
    for k, v in RESULTS.items():
        print(f'{k}: 決勝トーナメント進出 {str(v[0]).rjust(3)}回({v[0]/TOTAL*100:6.2f}%)、'
                f'グループリーグ敗退 {str(v[2]).rjust(3)}回({v[2]/TOTAL*100:6.2f}%)')
        fw.write(f'{k}: 決勝トーナメント進出 {str(v[0]).rjust(3)}回({v[0]/TOTAL*100:6.2f}%)、'
                f'グループリーグ敗退 {str(v[2]).rjust(3)}回({v[2]/TOTAL*100:6.2f}%)\n')
```

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

```Python
import copy
```

グループE、4チームを登録しています。後で見やすいように、最長文字列「コスタリカ」の5文字で空白で埋めてセンタリングしています。

```Python
# チーム名の登録
spain = 'スペイン'.center(5, '　')
japan = '日本'.center(5, '　')
germany = 'ドイツ'.center(5, '　')
costa_rica = 'コスタリカ'
```

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

```Python
# 2022年11月23日時点の勝ち点情報の登録
TEAMS = {spain: [7, 7, 3],
        japan: [2, 1, 3],
        germany: [1, -1, 0],
        costa_rica: [0, -7, 0]}
```

チームＡが、1対0で勝利した場合の関数です。チームＡの総得点を+1、得失点差を+1、勝ち点を+3、チームＢの得失点差を-1しています。

```Python
# チームＡが勝った時の関数
def team_a(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')
```

チームＢが、0対1で勝利した場合の関数です。チームＡの得失点差を-1、チームＢの総得点を+1、得失点差を+1、勝ち点を+3しています。

```Python
# チームＢが勝った時の関数
def team_b(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')
```

決勝トーナメント進出、グループリーグ敗退をそれぞれ集計するための辞書を作成しています。

```Python
# 決勝トーナメント進出、グループリーグ敗退の集計用
RESULTS = {spain: [0, 0, 0],
            japan: [0, 0, 0],
            germany: [0, 0, 0],
            costa_rica: [0, 0, 0]}
```

2022年11月27日と12月1日、全4試合の勝敗パターンを配列で登録しています。

```Python
# 2022年11月27日と12月1日、全4試合の勝敗パターンを配列で登録
matches1 = [team_a, draw, team_b]
matches2 = [team_a, draw, team_b]
matches3 = [team_a, draw, team_b]
matches4 = [team_a, draw, team_b]
```

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

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

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

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

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

```Python
# 2022年11月27日第一試合
for match1 in matches1:
    # 2022年11月27日第二試合
    for match2 in matches2:
        # 2022年12月1日第一試合
        for match3 in matches3:
            # 2022年12月1日第二試合
            for match4 in matches4:
```

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

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

2022年11月27日第一試合〜12月1日第二試合までの計4試合の「チームＡの勝利、引き分け、チームＢの勝利」を試しています。

```Python
# 2022年11月27日第一試合、日本 対 コスタリカ
match1(fw, teams, japan, costa_rica)
# 2022年11月27日第二試合、スペイン 対 ドイツ
match2(fw, teams, spain, germany)
# 2022年12月1日第一試合、日本 対 スペイン
match3(fw, teams, japan, spain)
# 2022年12月1日第二試合、コスタリカ 対 ドイツ
match4(fw, teams, costa_rica, germany)
```

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

```Python
# 2022年11月23日時点の勝ち点情報と全4試合の勝敗から、総得点でソートする
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位以下はグループリーグ敗退を+1して、それぞれの結果を表示しています。

```Python
for i, team in enumerate(sorted3):
    if i < 2:
        # グループ2位以内は決勝トーナメント進出
        RESULTS[team[0]][0] += 1
        print(f'{team[0]}、勝ち点{str(team[1][2]).rjust(2)}: 決勝トーナメント進出')
        fw.write(f'{team[0]}、勝ち点{str(team[1][2]).rjust(2)}: 決勝トーナメント進出\n')
    else:
        # グループ3位以下はグループリーグ敗退
        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')
```

最後に、グループE 4チームの決勝トーナメント進出、グループリーグ敗退を集計した結果を表示しています。

```Python
# 決勝トーナメント進出、アジア4次予選、敗退の集計結果を表示
for k, v in RESULTS.items():
    print(f'{k}: 決勝トーナメント進出 {str(v[0]).rjust(3)}回({v[0]/TOTAL*100:6.2f}%)、'
            f'グループリーグ敗退 {str(v[2]).rjust(3)}回({v[2]/TOTAL*100:6.2f}%)')
    fw.write(f'{k}: 決勝トーナメント進出 {str(v[0]).rjust(3)}回({v[0]/TOTAL*100:6.2f}%)、'
            f'グループリーグ敗退 {str(v[2]).rjust(3)}回({v[2]/TOTAL*100:6.2f}%)\n')
```

## 動作確認環境
• MacOS 13.0.1
• Python 3.9.6

## スクリプトの実行結果
実行結果は、下記の通りになりました。グループE 残り4試合の「チームＡの勝利、引き分け、チームＢの勝利」の総数は、3の4乗=81通りで、期待通りの結果が返ってきています。

```
 スペイン: 決勝トーナメント進出 70回( 86.42%)、グループリーグ敗退 11回( 13.58%)
  日本  : 決勝トーナメント進出 68回( 83.95%)、グループリーグ敗退 13回( 16.05%)
  ドイツ : 決勝トーナメント進出 13回( 16.05%)、グループリーグ敗退 68回( 83.95%)
コスタリカ: 決勝トーナメント進出 11回( 13.58%)、グループリーグ敗退 70回( 86.42%)
```

## グループE 残り4試合の考察
2022 FIFAワールドカップ、グループE 4チームを考察すると、以下のようなことが言えます。
2022年11月23日時点で、

- 得失点差+7とトップのスペインが、決勝トーナメント進出確率、86.42%となっている。
- 得失点差+1の2位の日本が、決勝トーナメント進出確率、83.95%となっている。
- 得失点差−1の3位のドイツが、決勝トーナメント進出確率、16.05%となっている。
- 得失点差−7の4位のコスタリカが、決勝トーナメント進出確率、13.58%となっている。

どういう状態の時に、日本が決勝トーナメントに進出できるか見てみよう。

### 日本が2連敗で勝ち点3のまま
日本が2連敗で勝ち点3のままの状態で、グループリーグ敗退する一例である。日本がコスタリカとスペインに負け、ドイツがスペインとコスタリカに勝利した場合、日本はグループリーグ敗退となる。

```
  日本 xコスタリカ、コスタリカ: 勝利
 スペインx ドイツ 、 ドイツ : 勝利
  日本 x スペイン、 スペイン: 勝利
コスタリカx ドイツ 、 ドイツ　: 勝利
 スペイン、勝ち点 6: 決勝トーナメント進出
 ドイツ 、勝ち点 6: 決勝トーナメント進出
  日本 、勝ち点 3: グループリーグ敗退
コスタリカ、勝ち点 3: グループリーグ敗退
```

|   |試合数|勝ち数|引き分け数|負け数|得点数|失点数|得失点差|勝ち点|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|スペイン|3|2|0|1|8|1|+7|6|
|ドイツ|3|2|0|1|3|2|+1|6|
|日本|3|1|0|2|2|3|−1|3|
|コスタリカ|3|1|0|2|1|8|−7|3|

なんと、日本が2連敗で勝ち点3のままの状態で、決勝トーナメント進出できる場合が存在する。その条件は日本がコスタリカとスペインに負け、ドイツがスペインに負け、コスタリカに勝利した場合、日本は決勝トーナメント進出となる。日本が2連敗となるのは全部で9通りあるが、下記の場合のみ日本が決勝トーナメントに進出できる。そのカラクリは、日本とドイツ、コスタリカが勝ち点で並ぶが、得失点差でコスタリカは脱落。日本とドイツの直接対決で、日本はドイツに勝利しているので、この場合のみ日本が決勝トーナメントに進出できる。

```
  日本 xコスタリカ、コスタリカ: 勝利
 スペインx ドイツ 、　スペイン: 勝利
  日本 x スペイン、　スペイン: 勝利
コスタリカx ドイツ 、　ドイツ　: 勝利
 スペイン、勝ち点 9: 決勝トーナメント進出
  日本 、勝ち点 3: 決勝トーナメント進出
 ドイツ 、勝ち点 3: グループリーグ敗退
コスタリカ、勝ち点 3: グループリーグ敗退
```

|   |試合数|勝ち数|引き分け数|負け数|得点数|失点数|得失点差|勝ち点|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|スペイン|3|3|0|0|9|0|+9|9|
|日本|3|1|0|2|2|3|−1|3|
|ドイツ|3|1|0|2|2|3|−1|3|
|コスタリカ|3|1|0|2|1|8|−7|3|

### 日本が1敗1引き分けで勝ち点4
日本が1敗1引き分けで勝ち点4にした状態で、グループリーグ敗退する一例である。日本がコスタリカに引き分け、スペインに負け、ドイツがスペインとコスタリカに勝利した場合、日本はグループリーグ敗退となる。

```
  日本 xコスタリカ、引き分け
　スペインx ドイツ 、 ドイツ : 勝利
  日本 x スペイン、 スペイン: 勝利
コスタリカx ドイツ 、 ドイツ : 勝利
 スペイン、勝ち点 6: 決勝トーナメント進出
 ドイツ 、勝ち点 6: 決勝トーナメント進出
  日本 、勝ち点 4: グループリーグ敗退
コスタリカ、勝ち点 1: グループリーグ敗退
```

|   |試合数|勝ち数|引き分け数|負け数|得点数|失点数|得失点差|勝ち点|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|スペイン|3|2|0|1|8|1|+7|6|
|ドイツ|3|2|0|1|3|2|+1|6|
|日本|3|1|1|1|2|2|±0|4|
|コスタリカ|3|0|1|2|0|8|−8|1|

日本が1敗1引き分けで勝ち点4にした状態で、決勝トーナメント進出する一例である。日本がコスタリカに引き分け、スペインに負け、ドイツがスペインに負け、コスタリカに勝利した場合、日本はトーナメント進出となる。
日本が勝ち点4になるのは全部で18通り、そのうち決勝トーナメント進出できるのは13通りである。

```
  日本 xコスタリカ、引き分け
 スペインx ドイツ 、 スペイン: 勝利
  日本 x スペイン、 スペイン: 勝利
コスタリカx ドイツ 、 ドイツ : 勝利
 スペイン、勝ち点 9: 決勝トーナメント進出
  日本 、勝ち点 4: 決勝トーナメント進出
 ドイツ 、勝ち点 3: グループリーグ敗退
コスタリカ、勝ち点 1: グループリーグ敗退
```

|   |試合数|勝ち数|引き分け数|負け数|得点数|失点数|得失点差|勝ち点|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|スペイン|3|3|0|0|9|0|+9|9|
|日本|3|1|1|1|2|2|±0|4|
|ドイツ|3|1|0|2|2|3|−1|3|
|コスタリカ|3|0|1|2|0|8|−8|1|

### 日本が2引き分けで勝ち点5
日本が2引き分けで勝ち点5にした場合は、必ず決勝トーナメント進出する。その一例である。日本がコスタリカとスペインに引き分け、ドイツがスペインに負け、コスタリカに勝利した場合、スペインと日本が決勝トーナメント進出する。

```
  日本 xコスタリカ、引き分け
 スペインx ドイツ 、　スペイン: 勝利
  日本 x スペイン、引き分け
コスタリカx ドイツ 、　ドイツ　: 勝利
 スペイン、勝ち点 7: 決勝トーナメント進出
  日本 、勝ち点 5: 決勝トーナメント進出
 ドイツ 、勝ち点 3: グループリーグ敗退
コスタリカ、勝ち点 1: グループリーグ敗退
```

|   |試合数|勝ち数|引き分け数|負け数|得点数|失点数|得失点差|勝ち点|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|スペイン|3|2|1|0|8|0|+8|7|
|日本|3|1|2|0|2|1|+1|5|
|ドイツ|3|1|0|2|2|3|−1|3|
|コスタリカ|3|0|1|2|0|8|−8|1|

日本が2引き分けで、ドイツがスペインとコスタリカに勝利した場合、ドイツが勝ち点6となり日本と決勝トーナメント進出となる。その場合、スペインは勝ち点4となりグループリーグ敗退となる。

```
  日本 xコスタリカ、引き分け
 スペインx ドイツ 、 ドイツ : 勝利
  日本 x スペイン、引き分け
コスタリカx ドイツ 、 ドイツ : 勝利
 ドイツ 、勝ち点 6: 決勝トーナメント進出
  日本 、勝ち点 5: 決勝トーナメント進出
 スペイン、勝ち点 4: グループリーグ敗退
コスタリカ、勝ち点 1: グループリーグ敗退
```

|   |試合数|勝ち数|引き分け数|負け数|得点数|失点数|得失点差|勝ち点|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|ドイツ|3|2|0|1|3|2|+1|6|
|日本|3|1|2|0|2|1|+1|5|
|スペイン|3|1|1|1|7|1|+6|4|
|コスタリカ|3|0|1|2|0|8|−8|1|

### 日本が1勝1敗で勝ち点6
日本が1勝1敗で勝ち点6にした場合でも、必ず決勝トーナメント進出する。その一例である。日本がコスタリカに勝利し、スペインに負け、ドイツがスペインに負け、コスタリカに勝利した場合、スペインと日本が決勝トーナメント進出する。

```
  日本 xコスタリカ、　　日本　: 勝利
 スペインx ドイツ 、　スペイン: 勝利
  日本 x スペイン、　スペイン: 勝利
コスタリカx ドイツ 、　ドイツ　: 勝利
 スペイン、勝ち点 9: 決勝トーナメント進出
  日本 、勝ち点 6: 決勝トーナメント進出
 ドイツ 、勝ち点 3: グループリーグ敗退
コスタリカ、勝ち点 0: グループリーグ敗退
```

|   |試合数|勝ち数|引き分け数|負け数|得点数|失点数|得失点差|勝ち点|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|スペイン|3|3|0|0|9|0|+9|9|
|日本|3|2|0|1|3|2|+1|6|
|ドイツ|3|1|0|2|2|3|−1|3|
|コスタリカ|3|0|0|3|0|9|−9|0|

日本が1勝1敗で、ドイツがスペインに勝利しても、ドイツは決勝トーナメントに進出できない。なぜならスペインと日本、ドイツが勝ち点6で並ぶが、得失点差でスペインが決勝トーナメントに進出し、残りの1枠を日本とドイツのどちらかとなるが、直接対決で日本はドイツに勝利しているので、日本が決勝トーナメント進出となる。

```
  日本 xコスタリカ、  日本 : 勝利
 スペインx ドイツ 、 ドイツ : 勝利
  日本 x スペイン、 スペイン: 勝利
コスタリカx ドイツ 、 ドイツ : 勝利
 スペイン、勝ち点 6: 決勝トーナメント進出
  日本 、勝ち点 6: 決勝トーナメント進出
 ドイツ 、勝ち点 6: グループリーグ敗退
コスタリカ、勝ち点 0: グループリーグ敗退
```

|   |試合数|勝ち数|引き分け数|負け数|得点数|失点数|得失点差|勝ち点|
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|スペイン|3|2|0|1|8|1|+7|6|
|日本|3|2|0|1|3|2|+1|6|
|ドイツ|3|2|0|1|3|2|+1|6|
|コスタリカ|3|0|0|3|0|9|−9|0|

### 日本が1勝1引き分けの勝ち点7以上
日本が1勝1引き分けの勝ち点7と2連勝の勝ち点9にした場合は具体例を挙げないが、必ず決勝トーナメントに進出する。

上記の考察結果から、日本が決勝トーナメント進出するには

- 日本が勝ち点5以上で必ず決勝トーナメントに進出できる。(例外あり)
- 日本が1敗1引き分けの勝ち点4の場合でも、ドイツに勝利しているのとコスタリカが大量失点でスペインに負けているので、日本が決勝トーナメントに進出できる確率は　13÷18=72.22%　で意外と高い。
- 日本が2連敗しても決勝トーナメントに進出できる場合がある。しかし、これはかなり他人任せになる。

## 考察結果で、例外について軽く触れる
今回は
- チームＡが1対0で勝利
- 0対0の引き分け
- チームＢが0対1で勝利

の3通りしか用意していません。当然、スペインxコスタリカ戦のように、大量得失点差が発生する試合が再び出てくるかもしれません。そうなると直接対決の結果が薄れてきます。例えば、日本が残り2試合を1勝1敗の勝ち点6で乗り切ったとしても、その1敗で大量失点を喫してしまった場合、得失点差で、ドイツが日本を上回り決勝トーナメント進出ということもあり得ます。もう既に大量失点をしているコスタリカは大量得点で勝利しないと決勝トーナメントは難しいでしょう。

## 最後に

2022年11月23日時点での、日本の決勝トーナメントに進出する確率がどのくらいか、Pythonスクリプトを作成して試してみました。
グループE 残り4試合の考察でも述べた通り、日本が決勝トーナメントに進出するためには、残り2試合で2引き分けか1勝1敗で乗り切ることです。ここで、1敗1引き分けで終えてしまうと、得失点差でドイツが決勝トーナメント進出ともなりかねません。2連敗は絶対に避けたいです。
他人任せにはなりますが、決勝トーナメント進出だけにフォーカスするのであれば、次節11月27日の試合でスペインがドイツに勝利してくれれば、日本の決勝トーナメント進出の確率はグッと上がりますが、隣のグループFの1位通過がベルギーとなると、できればグループEを1位通過してもらいたいところです。
最後まで、この記事を読んでいただき、ありがとうございました。