9/30の続き

\vec{p}=(g,c,p),\vec{q}=(\frac{1}{3},\frac{1}{3},\frac{1}{3})
で、\vec{p}を固定したとき

  • +6歩進む確率P_A=\frac{1}{3}(p+c) 出る回数A
  • +3歩進む確率P_B=\frac{1}{3}(g) 出る回数B
  • -3歩進む確率P_C=\frac{1}{3}(c) 出る回数C
  • -6歩進む確率P_D=\frac{1}{3}(p+g) 出る回数D
  • 0歩進む確率P_E=\frac{1}{3}(p+c+g) 出る回数E

一回のグリコでN回ジャンケンすると
A+B+C+D+E=N
A〜EをN個重複を許して並べるやり方は_5H_N通りあって、このうち
2A+B>C+2D・・・(1)
を満たすものを抽出。ここで
\sum_{2A+B>C+2D}\frac{N!}{{A!B!C!D!E!}}P_A^AP_B^BP_B^CCP_D^DP_E^E
を計算する。
というわけで、(1)を抽出できる関数を作成したらいいんじゃろうか…
先生「あ〜それdirichletだよ」
的な助言があったりなかったりとか思いつつ
とりあえず構想としては
A+B+C+D+E=N
があります、と。
たぶん

for(a in 0:n){
for(b in 0:(n-a)){
for(c in 0:(n-a-b)){
for(d in 0:(n-a-b-c)){
for(e in 0:(n-a-b-c-d)){
if((2a+b-c-2d)>0){
…

的なことをゴリゴリすると(1)になるんじゃね、的な。
texの使い方を教わりました。
サンクスNK。

終わり

10/3 追記

library(gtools)
combinations(5,5,repeats.allowed=TRUE)

でなんかできそうなにおいだぞ…

N<-6 #ジャンケンする回数
library(gtools)
#とりあえず全通り出す
cmb<- combinations(5,N,repeats.allowed=T)
num<- nrow(cmb)
#A→1、B→2、C→3、D→4、E→5 と変換
ABCDE.count<- matrix(rep(0,5*nrow(cmb)),nc=5)
for(i in 1:num){
for(k in 1:N){
if(cmb[i,k]==1){ABCDE.count[i,1]<- ABCDE.count[i,1] + 1}
else if(cmb[i,k]==2){ABCDE.count[i,2]<- ABCDE.count[i,2] + 1}
else if(cmb[i,k]==3){ABCDE.count[i,3]<- ABCDE.count[i,3] + 1}
else if(cmb[i,k]==4){ABCDE.count[i,4]<- ABCDE.count[i,4] + 1}
else {ABCDE.count[i,5]<- ABCDE.count[i,5] + 1}
} #for.k end
} #for.i end

gain<- matrix(c(rep(2,nrow(cmb)),rep(1,nrow(cmb)),rep(-1,nrow(cmb)),rep(-2,nrow(cmb)),rep(0,nrow(cmb))),nc=5)
step<- gain*ABCDE.count

#勝ちパターンだけとってくる行列
win.pattern<- matrix(rep(0,5),nc=5)
for(j in 1:num){
if(sum(step[j,])>0){
win.pattern<- rbind(win.pattern,ABCDE.count[j,])
}
} #for.j end
win.pattern<- win.pattern[c(-1),]
win.pattern


library(MCMCpack)
p<- rdirichlet(1,c(1,1,1))
q<- rep(1/3,3)
step.matrix<- rbind(c(0,3,-6),  #1回のじゃんけんでの相手からみた自分の変位
                    c(-3,0,6),
                    c(6,-6,0))
pq<- t(p) %*% q #pとqが出すグー、チョキ、パーの掛け合わせ確率
p
q
pq
a<- pq[3,1] + pq[2,3]
b<- pq[1,3]
c<- pq[2,2]
d<- pq[1,3] + pq[3,2]
e<- pq[1,1] + pq[2,2] + pq[3,3]

probability<- 0
for(m in 1:nrow(win.pattern)){
probability<- probability +
a^win.pattern[m,1]*b^win.pattern[m,2]*c^win.pattern[m,3]*d^win.pattern[m,4]*e^win.pattern[m,5]
}
probability
p

probabilityが求めるものになっているのか?