2013-12-19

http://anond.hatelabo.jp/20131219223049

別に読み間違えても恥ずかしく無いだろこんなクソコード

普通にif文とカウンタ使って

experiment1 = function(max) {

iter = 0

freq = rep(0, 6)

count = 0

while(iter < max) {

dice1 = rdice(1)

dice2 = rdice(1)

if (dice1 == 6 || dice2 == 6) {

freq[dice1] = freq[dice1] + 1

freq[dice2] = freq[dice2] + 1

iter = iter + 1

if (dice1 == 6 && dice2 == 6) count++

}

}

freq[6] = count

freq / max

}

とでも書けばいいのに。

配列インデックスダイスの値がごちゃまぜになってるだけでもクソなのに、さらに小賢しい工夫までつけて、とにかくクソ。

記事への反応 -
  • ごめん、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 =...

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

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