投稿

12月, 2016の投稿を表示しています

「エレガントな問題解決」演習問題 2.1.27(ひっかけ問題)(c)の解答

イメージ
いつもは、↓別のブログの方に載せていたのですが、 「エレガントな問題解決」演習問題 2.1.25の解答(分母が3つの項の積になっている数列の和): 主張 今回はRを使うので、こちらのブログで。 「エレガントな問題解決」 P29 2.1.27(ひっかけ問題)(c) 偏りのないコインを投げて、表が3回以上出る確率が50%を超えるには、最低何回投げればよいだろうか。 自分が題意を理解できているのか、いまいち自信がありません。私は、ひっかかっているのか? とにかく解答してみます。 コインを1回投げて、表が3回以上出ることは、もちろんありません。 なので、考慮に値するのは3回以上投げるケースから。 3回投げて、表が3回出る確率をRで求めてみると、 > (1/2)^3 [1] 0.125 なので、12.5%。これは50%を超えていませんね。 では、4回投げる場合。表が3回出る確率と、表が4回出る確率を足せばいいですね。 4回投げて、表が3回出る確率は、(Cは組み合わせの記号だと思ってください) (1/2)^4 × 4 C 3 ですね。Rでは、組み合わせ数を求めるのにchooseコマンドが使えるので、 > (1/2)^4 * choose(4,3) [1] 0.25 4回投げて、表が3回出る確率は、 > (1/2)^4 * choose(4,4) [1] 0.0625 上記の2つを足しても、まだ50%は超えませんね。 いちいち足すのもまどろっこしいので、関数にしてみましょう。 # # n回投げたときに、3回以上でる確率を返す関数 # ProbMoreThan3 <- function(n){   s <- 0    # 組み合わせ数の合計値格納用   for(i in 3:n){     s <- s + choose(n,i)   }   p <- 1/2^n * s   return(p) } 試しに呼んでみましょう。 > ProbMoreThan3(3) [1] 0.125 > ProbMoreThan3(4) [1] 0.3125 よさそうです。(エラー処理は入れていないので、2とか小数とか、そういうのを引数にす