今まではシミュレーションにより、何万回も試行して得点を出して、度数分布図を描いていた。
今度は、バッターに打率を与えたらx点はpの確率で取ります、とバシッと出しにかかりたい。
ヒットが永遠に続く(ことはまあ無いだろうけど)ことを考えて、とりあえずあり得ないとみなせるくらいの確率の連続ヒットは除外しようということを前に書いた。
Vnum <- 1000 # the number of batters Nout.num<- 20 # the number of outs hitp <- 9 # hit probability A<- array(0,c(Vnum,Nout.num,hitp)) # Vnum行Nout列の行列をp個作る。 for(p in 1:hitp){ for(v in 1:Vnum){ for(Nout in 1:Nout.num){ # 最後のバッターは必ずアウト。Vnum-1人のうちNout - 1人がアウト。 A[v,Nout,p]<- choose((v - 1),(Nout - 1))*(0.1*p)^(v - Nout)*(1 - 0.1*p)^(Nout - 1)*(1 - 0.1*p) } } } cumsum.p<- array(0,c(Vnum,Nout.num,hitp)) for(i in 1:hitp){ cumsum.p[,,i]<- apply(A[,,i],2,cumsum) # ヒットを打つ確率pのとき、回ってくるバッター数の加算確率。 } cut.off<- matrix(0,Nout.num,hitp) # 加算確率がある程度超えたら終了とする。この時の最小打者数。 for(p in 1:hitp){ for(Nout in 1:Nout.num){ cut.off[Nout,p]<- min(which(cumsum.p[,Nout,p]>0.9999)) } } dimnames(cut.off) <- list(1:20, (1:9)/10) names(dimnames(cut.off)) <- c("Out", "Hit probability")
cut.off Hit probability Out 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 5 6 8 11 14 19 26 42 88 2 6 8 11 14 18 24 34 54 113 3 8 10 13 17 22 29 41 64 134 4 9 12 15 20 25 33 47 73 153 5 11 14 18 22 28 37 52 82 171 6 12 16 20 25 31 41 58 91 189 7 13 17 22 27 34 45 63 99 206 8 15 19 24 29 37 49 69 107 222 9 16 21 25 32 40 53 74 115 238 10 18 22 27 34 43 57 79 123 254 11 19 24 29 36 46 60 84 130 269 12 20 25 31 39 49 64 88 137 284 13 21 27 33 41 51 67 93 145 299 14 23 28 35 43 54 71 98 152 314 15 24 30 37 45 57 74 103 159 329 16 25 31 38 47 60 78 107 166 343 17 27 33 40 49 62 81 112 173 357 18 28 34 42 52 65 84 116 180 372 19 29 36 44 54 67 88 121 187 386 20 30 37 45 56 70 91 125 194 400
行と列に名前をつけてみたよ。
見方を書かないと忘れる、というのは前も同じ。
例えば、Out=3、Hit probability=0.4のところをみると、17。
これは、17人まで考えれば、99.99%をカバーしている、ということになる。
これ以降の計画は
・考えられうる打撃パターンをすべて発生させる。
・決めたアウト数に満たない打撃パターンを排除する。
・打撃パターンに対応する得点を計算し、確率もくっつける。
・ヤホ-イ(・∀・)
という感じのごり押しでいこうと思う。
ただしこれでは、打者が複数いるときのは考えられない?にくい?ので、まあこれがうまくいったら考えようじゃないか。
__ ,、へ
_.._ ,、 '": : : : : : : : Y/、i: :\
i:::〆 : : : : : : : : : : : く〈: : l: : : :ヽ
/: : : : : : : : : : : : : :ヽ: : : : ::l: : : : ヽ
/ /: : i: : : : : : : : : : : : : l、: : : : l: : : : : :',
いいんじゃないかな /:./: : :.lヽ: : lヽ: : : : : : : : L:.:.: : : l: : : : : : ,
/:./l: : : :l..._\V゛\: : : : : :l:::::::ヽ: :l: : : : : : i
l:./: l: : : :L.. ヽ /l::\: : :.l::::::::::l: ∧: : : : : :l
/l/: : ',: : :.| l::ヽ ヽ-'ヽ: ト::::// ',: : : : : l
/:.l': : : ヽ: :.l l`" 、 |:.l: : :/ i: : : : : l
/: : : : : : : 〉: l ヽ -‐' ィ:./Tく. l: : : : : l
/: : : : : : :./ `.j > -r '゛l/_.ハヽj l: : : : : l
/ : : : : : : / `rr┴ '"::::::::/>--、 l: : : : : l
/: : : : : : :/ _.. r '"Hヽ:::::::::::::/ ヽ. l: : : : : l
/: : : : : : :/ r'" レ'/^/::ヽ:::::/ i. l: : : : : l
/: : : : : : / l /:::/ ./::::::::::Y i. / !: : : : :.l
/: : : : : :./ j /:::::::/ ./::::::::::::::l. l. 01 ,' !: : : : :.l
/ : : : : : / ノ l:::::,:' /::::::::::::::::::',. l l l: : : : : l
/: : : : : :/ ./;;:ソ::/ ./::::::::::::::::::::::ヽr‐---‐ト, l: : : : : l
/: : : : : :/ /;;;:/::/ ./::::::::::::::::::::::::::::|:;;;;;;;;;;;;;;リ l: : : : : l