プログラミングセミナー グリコ

プログラミングセミナーでの内容や思いついたことをぐだ〜と書いておくことにしよう。

本日の内容

というか急に閲覧しはじめてわからない人へ。
あとでどこかにまとめを書く。

一回のジャンケンで相手より前にいる歩数の期待値で考えていたが、無限回ジャンケンしたら勝率が0か1になるのは当たり前だった。
というわけで確率で考えようみたいな話だったような気がするがセミナー終わっていざ言葉にしようとするとようわからん。
やはりNKの力が必要なようだ。

打率の話はまだ温めておく。

以下スクリプト

library(MCMCpack)
guriko<- function(n){ #n回シミュレーションする
trials<- 1000 #1000回グリコする
p<- rdirichlet(1,c(1,1,1)) #グー、チョキ、パーの順
q<- c(rep(1/3,3)) #とりあえず1/3の等確率
pq<- t(p) %*% q #pとqが出すグー、チョキ、パーの掛け合わせ確率
step.matrix<- rbind(c(0,3,-6),  #1回のじゃんけんでの相手からみた自分の変位
                    c(-3,0,6),
                    c(6,-6,0))

battle.num<- matrix(rep(0,4*n),nc=4) #相手の手の確率を表記しない
#battle.num<- matrix(rep(0,7*n),nc=7) #相手の手の確率を表記する

for(j in 1:n){
battle<- c(rep(0,trials)) #勝数カウントベクトル
p<- rdirichlet(1,c(1,1,1)) #グー、チョキ、パーの順
#q<- rdirichlet(1,c(1,1,1)) #グー、チョキ、パーの順
q<- c(rep(1/3,3)) #とりあえず1/3の等確率
pq<- (t(p)) %*% q #pとqが出すグー、チョキ、パーの掛け合わせ確率
for(k in 1:trials){
if(sum(sample(c(step.matrix),size=100,prob=c(pq),replace=T))>=0){ #変位が0以上なら勝ち
battle[k]<- 1 #勝数増やす
}
}
win.prob<- sum(battle)/trials #勝率
battle.num[j,]<- c(p,win.prob)   #相手の手の確率を表記しない
#battle.num[j,]<- c(p,q,win.prob) #相手の手の確率を表記する
}
return(battle.num)
}

終わり