打順最適化をして確率計算で出した得点分布と、対戦シミュレーションの結果がおかしい話。
(リンクでは総当たり戦しか書いていない。通りの対戦もすぐできる。)
チーム1とチーム2が、1イニングである得点k点()を取る確率がだとすると
(実際にはまで得点は取れないけど。)
一般にチームiでは
ここで、チーム1がチーム2に勝つ確率は、
がi点取ったときに、が(i-1)点以下の得点
のときだから
R的には行列として処理できそうで
p1*t(p2)
とでもすれば得点確率の総当たりは簡単に出せて
となり
diag upper.tri lower.tri
ですぐ拾ってこれる。
で、今まではちょっと楽しいからって2010年の阪神を使っていたけど、バグ取りが面倒くさい難しいので
Nbase<- 4 people<- 9 T<- rbind(c(rep(0,Nbase),1),matrix(c(1-0.1*Nbase,rep(0.1,Nbase)),people-1,Nbase+1,byrow=TRUE)) b1<- mapply(rep,2:people,1:(people-1)) b2<- mapply(rep,2:people,(people-1):1) b<- diag(1,people) b[upper.tri(b)]<- unlist(b1) b[lower.tri(b)]<- unlist(b2) Tigars.array<- array(0,c(people,Nbase+1,2)) team.array<- array(0,c(people,Nbase+1,people)) for(t in 1:people){ team.array[,,t]<- T[b[t,],] }
という分かりやすいチームアレイ使っていこうぜ!
par(mfrow=c(3,3)) for(i in 1:people){ image(team.array[,,i],main=i) }
少なくともチームアレイ作成は問題ない。