あ、ホント超ゴメン。勘違いしてた。すいません。結果どうこいってるのは別増田で、
ここまでコード云々言ってた自分は完全読み間違えです。(自分で書き写した上でも間違えてるからどうしようもないな。。。orz)
結果も下にあるのね。
さて、では改めて。(すいません、上のは忘れて。。。)
つまり、やってることは、二つサイコロを振って、1つが6だった場合にスタート、なわけだ。
この時に、それぞれ出た目に関してカウントしていって、
片方が6、という条件があるからその分を確実に引かなきゃ、ということで、
freq[dice1] = freq[dice1] + 1
freq[dice2] = freq[dice2] + 1
freq[6] = freq[6] - 1
(1,1)(1,2)...(2,1)(2,2)...(6.6)の36通り。
この時、もう片方が6であるのは1/11~0.9, 他は2/11~0.18。
つまり、プログラム自体は数学的に正しいことをやっていると言える。
これはまさにモンティ理論と同じで、6を開いた瞬間に、上にあるように元の確率に対して情報を与えて11通りの等しくない場合分けに分けられてるからだ。
ということでごめん、元増田が言ってることは正しい、と言う結論。
http://ideone.com/gIGYPs Rで実験したら増田が正しかった。 トラバとブコメで増田を馬鹿にしてる奴は土下座しなきゃだなw
ごめん、R知らないからなんとなくでしか読み取れないけど、 experiment2の方は、単位毎回、 「1回サイコロを投げ、それが6だった時に限り2回目の試行を行い、それがNである確率」 という...
2個のサイコロを同時に振り、どちらかが6だった時をカウントしていく。 カウントの値は以下のように増やしている。 freq[dice1] = freq[dice1] + 1 freq[dice2] = freq[dice2] + 1 freq[6] = freq[6] - 1 dice...
いや、そこは理解してるんだけど。。。 experiment1 = function(max) { iter = 0 freq = rep(0, 6) while(iter < max) { dice1 = rdice(1) dice2 = rdice(1) if (dice1 == 6 || dice2 == 6) { freq[dice1] = freq...
この試行は両方が6だった場合に限りカウントされてく(iterが増える)訳で、 つまりはカウントされた分はすべて両方6の場合なわけで。 これが間違い。||は論理和なので(dice1 == 6 || dice2 =...
あ、ホント超ゴメン。勘違いしてた。すいません。結果どうこいってるのは別増田で、 ここまでコード云々言ってた自分は完全読み間違えです。(自分で書き写した上でも間違えてるから...
別に読み間違えても恥ずかしく無いだろこんなクソコード 普通にif文とカウンタ使って experiment1 = function(max) { iter = 0 freq = rep(0, 6) count = 0 while(iter < max) { dice1 = rdice(1) dice2 = rdice(1) i...
その計算の結果がそうなるのはいいよ。 で? それが元増田の主張とどう関係するわけ?
いきなりキレててうけるw お前はコンビニ前にたむろしてるヤンキーかw
引っ込みつかなくなっちゃったか。。。
元増田の日本語がクソすぎて事前確率と事後確率の話とずれたこと言ってるとしか思えねえって話だよ
コードにしてもらえると増田がどんだけバカかがよく分かっていいな