10/21 プログラミングセミナー

プログラムを動かすために、必要な定義。

  • イニング
  • アウト
  • 打者
  • 打席
  • 打撃パターン
  • 得点

ふたつチームを作って勝負させようと思っていたが、ひとつのチームで9イニング勝手にやったら何点取れるかをヒストグラムにして分布を考えるのも手だ。
 
やり方ひとつめ
打者の集合\mathbb{D}=\{D_{i}|\:i\in\mathbb{N}\qquad\}と、打撃パターン\mathbb{U}=\{U_{j}|\:j\in\mathbb{N}\qquad\}がある。
打者がD_{i}のとき、ある打撃パターンU_{j}が出る条件付き確率はP(U_{j}|D_{i})
3アウトカウントでチェンジだから、k=3,4,,,人でチェンジになるとすると、最後の人はアウトでそれまでに2人アウトになる人を選べばいいから
_{k-1}C_{2}通りに打撃確率をわんさかかける。
 
やり方ふたつ目
左から、一塁、二塁、三塁。
0は走者無、1は走者有、とすると、塁上の走者のパターンB_{pattern}
\begin{equation}B_{pattern}=\begin{matrix}A\\B\\C\\D\\E\\F\\G\\H\end{matrix}\begin{pmatrix}0&0&0\\1&0&0\\1&1&0\\1&0&1\\1&1&1\\0&1&0\\0&1&1\\0&0&1\end{pmatrix}\end{equation}
というA〜Hの8パターンがある。
これらの各々にアウトカウント0、1、2、3の情報を持たせた32の状況を用意する。
ある打者D_{i}での状況から次の打者D_{i+1}への状況の推移は、32の状況にP(U_{j}|D_{i+1})をかけてなんやかんやすればいい。
ただし、推移がありえない場合の確率は0とする。
かけた行列の回数に、アウトや残塁数を考慮して得点を数える。
こうすれば行列的に処理できそう。
 
やり方みっつ目
とりあえずぶわ〜と乱数を発生させる。
前から数えていって、アウトカウント3つのところで区切っていく。
そのbinのなかで得点をカウントする。
 
みたいな話がでました。
ただ、最初に考えていた条件では難しすぎるので

  • 打者ひとり
  • アウトとシングルヒットのみ(HRもいれる?)
  • 一塁と本塁のみ

とかもっと簡略化してうまくいきそうならパラメタ増やそうぜ、みたいな。
まあそんな感じでもうちょっと言葉で定義が固まったら書き始めよう。
 
終わり