- 748 名前:132人目の素数さん mailto:sage [2020/06/26(金) 11:50:28 ID:k8AOi6FK.net]
- >>708
" (1)「犬」と書かれたカードと「猫」と書かれたカードがたくさんある山を用意する。 山から1枚カードを引くとき、「犬」が出る確率も「猫」が出る確率も等しく1/2とする。 " cards=rep(0:1,1e4) # 0:猫 1:犬のカードが1万枚 " (2) A君は山から2枚のカードを引き、その2枚を手元でシャッフルし、2枚の中から1枚を表にする。 " sim <- function(){ drawn=sample(cards,2) # 2枚のカードを引き index=sample(2,1) # 2枚の中から1枚を turned=drawn[index] # 表のカード hidden=drawn[-index] # 裏のままのカード " (3) 表にしたカードが「猫」なら、2枚を山に戻して(2)に戻る。 表にしたカードが「犬」なら、もう1枚のカードを表にして、そこに書いてある文字を紙にメモする。 そして、2枚を山に戻して(2)に戻る。 " if(turned==0){ # 表のカードが猫0なら res=NA # 返り値にNA(Not Available)を }else{ # そうでない(表のカードが犬1なら res=hidden # 裏のままのカードの記載を返り値に } return(res) } "この作業を延々と繰り返してメモに書かれたデータを蓄積していく。 メモが発生した回数 を N として、N 回分のデータのうち「犬」が書かれた回数を k とすれば、 k/N は N が大きければ大きいほど 1/3 に近づく。 " M=replicate(1e5,sim()) # 10万回繰り返して N=sum(!is.na(M)) # 返り値がNAでない(=メモが取られた)回数をNとする k=sum(M,na.rm=TRUE) # 返り値が犬1である個数を返す k/N 実行結果は、 > k/N [1] 0.4981091
|
|