野球シミュレータの開発(1)【打撃部分】
1,野球シミュレータの開発(1)
野球は統計と相性がいいスポーツ
野球はサッカーやバスケといったスポーツと比較すると、統計との相性がいいスポーツです。プレーが途切れることなく流動的に続いていく他の球技と違い、攻撃するフェーズと守備をするフェーズが分かれており、イニング、カウント、ランナー、スコアなどといった情報から場面を明確に区別することができます。このことから、野球は統計と非常に相性のいいスポーツということができ、細かく状況を分けてデータをとることが可能です。
野球の試合をコンピュータ内で再現する
野球のあらゆる状況を数字に落とし込むことができるならば、野球の試合をコンピュータ内である程度再現するができるのではないか、ということで、実際に実装してみたいと思います(他にやられている方も多数いるので、調べてみてください)。今回は以下のような設定でシミュレータを作成します。
1、関数『打者』は乱数を入力として受け取り、設定された確率に従ってイベントを出力する。
今回はとりあえず、NPBの平均的な打者を9人並べることでシミュレーションを行います(後々の検証でここはいじることになると思います)。そのため、NPB平均の打者を例にして説明していきます。
1.02 - Essence of Baseball | DELTA Inc.
DELTAさんのホームページから2018年の打撃データを拝借すると、NPB全体での打撃成績は、以下のようになっています。
打席 | 1B | 2B | 3B | HR | 四球 | 死球 | 三振 | |
セリーグ | 33059 | 5243 | 1335 | 132 | 825 | 2918 | 285 | 6302 |
パリーグ | 32712 | 5044 | 1242 | 178 | 826 | 2784 | 339 | 6168 |
合計 | 65771 | 10287 | 2577 | 310 | 1651 | 5702 | 624 | 12470 |
イベントを発生させるタイミングの設定が難しいため、併殺、失策による出塁、盗塁、犠打等は今回除外してシミュレーションを行います。
そのため、打者の打席結果は、三振、アウト(凡打(失策による出塁を含む))、シングルヒット、2ベース、3ベース、ホームラン、四死球のいずれかに分類されます(併殺打は凡打の特別な場合として扱います)。
そして上記のデータから、『打者』が打席に立った時(乱数を入力したとき)、どんな結果を出すか(出力するか)、確率を求めることができます。
打席 | 1B | 2B | 3B | HR | 四球 | 死球 | 三振 | 凡打 | |
確率 | 0.156 | 0.039 | 0.005 | 0.025 | 0.087 | 0.009 | 0.190 | 0.489 |
以上より、シミュレーション内の『打者』は上記の表の確率でイベントを発生させるということにします。なお、2アウトランナーなしだろうが、0アウト満塁だろうが、この確率は変わりません(状況によって打撃結果が変わることは、現実の野球界でもほとんどないとされています)。
次回は走塁について書いていきたいと思います。