野球シミュレータの開発(3)【走塁部分】
この記事は野球シミュレータの開発(2)の続きです。
データ収集完了
状態遷移のデータ収集が完了しました。アウトカウント、ランナー、イベントの組み合わせの数だけ状態が存在するので、遷移前の状態は、3*8*7(アウトカウントは3通り、ランナーは8通り、イベントは7通り)で168通りが存在します。全て掲載することは難しいので、
の2つの状態に関してのみ、今回は凡例として掲載します。
1、0アウトランナー1塁からの単打
集計の結果、画像のような結果になりました。*1
項目はそれぞれ以下のような意味です。
- aft_outcount ... 単打の後のアウトカウント
- aft_runner ... 単打の後のランナーの状態
- count(*) ... 状態遷移の発生数
- count(*) / 540 ... 全体に対する状態遷移の割合*2
例えば、表の1行目は、「0アウトランナー1塁からの単打で、0アウトランナー1・2塁になる確率は約70.4(%)」を表しています。
アウトカウントが増えているものは、ヒットを放ったものの、ランナーが先の塁を狙った結果、アウトになってしまったものと考えられます。
一番下の行の遷移ですが、0アウト3塁であることから、「1点が入ってなおも0アウトランナー3塁」という状態であると考えることができます。1本のヒットからこのような状況が導かれることはまずないので、おそらくエラーが絡んでの結果でしょう。この例のように、直接エラーの数をカウントしなくても、実際の試合の状態遷移を集計したことにより、エラーによる出塁と進塁も、結果的に再現することができました。
2、0アウトランナー1塁からの凡打
同様に集計を行い、画像のような結果になりました((2018年NPB公式戦より集計(一部除く)))。表の見方は、1と変わらないため割愛します。
まとめ
上記のような表を168個用意することで関数『走塁』の状態遷移を完成させることができました。思わぬ形で失策と併殺打を計算に含むことができたため、シミュレータの再現度は上がるものと思われます。次回以降で、『打者』と『走塁』を動かし、実際に試合のシミュレーションを行っていきます。
<<野球シミュレータの開発(2) 野球シミュレータの開発(4)>>