2013-12-19

http://anond.hatelabo.jp/20131219205450

あ、ホント超ゴメン。勘違いしてた。すいません。結果どうこいってるのは別増田で、

ここまでコード云々言ってた自分は完全読み間違えです。(自分で書き写した上でも間違えてるからどうしようもないな。。。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の場合11通り。

この時、もう片方が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 =...

    • コードにしてもらえると増田がどんだけバカかがよく分かっていいな

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん