# 野球1イニングあたりの得点確率

```Nout<- 3
Nbase<- 4
Nbatter<- 13
Bprob<- c(0.7,0.1,0.1,0.05,0.05)
#Ninning<- 9
#Bprob<- c(0.85,0.05,0.08,0.02)

#To count each batting pattern from 1 to Nbase.
num.count<- function(vec){
counter<- rep(0,Nbase)
for(result in 1:Nbase){
counter[result]<- length(which(vec==result))
}
return(c(Nout,counter))
}
#The result contains zero(length is Nbase+1).

#To count the one inning scores of each sequence.
score<- function(vec){
runner<- rep(0,Nbase)
for(k in 1:length(vec)){
runner<- c(runner,c(1,rep(0,(vec[k] - 1))))
}
runner<- runner[1:(length(runner) - (Nbase - 1))]
#runner<- runner[-c((length(seq) - Nbase + 1):length(seq))]
return(sum(runner))
}

#To count the probability to get a certain score by given sequence.
Prob<- function(vec){
P<- choose((Nout+length(vec)-1),(Nout-1))*prod((Bprob^num.count(vec)))
return(c(score(vec),P))
}

Result<- rep(0,(Nbatter-Nout+1))
a<- p<- list(c(1:Nbase))
Bpatterns<- expand.grid(p)
PROBABILITY<- apply(Bpatterns,1,Prob)
for(w in 0:max(PROBABILITY)){
Result[w+1]<- Result[w+1]+sum(PROBABILITY[2,which(PROBABILITY[1,]==w)])
}
for(b in 1:(Nbatter-Nout-1)){
p<- c(p,a)
Bpatterns<- expand.grid(p)
PROBABILITY<- apply(Bpatterns,1,Prob)
for(w in 0:max(PROBABILITY)){
Result[w+1]<- Result[w+1]+sum(PROBABILITY[2,which(PROBABILITY[1,]==w)])
}
}
Result<- Result+Bprob^Nout
Result
sum(Result)

Result
 6.654200e-01 1.730435e-01 9.017127e-02 4.171772e-02 1.787188e-02 7.255530e-03
 2.830949e-03 1.071401e-03 3.940491e-04 1.287242e-04 2.227919e-05
```