「エレガントな問題解決」演習問題 2.1.27(ひっかけ問題)(c)の解答
いつもは、↓別のブログの方に載せていたのですが、
「エレガントな問題解決」演習問題 2.1.25の解答(分母が3つの項の積になっている数列の和): 主張
今回はRを使うので、こちらのブログで。
「エレガントな問題解決」 P29 2.1.27(ひっかけ問題)(c)
とにかく解答してみます。
コインを1回投げて、表が3回以上出ることは、もちろんありません。
なので、考慮に値するのは3回以上投げるケースから。
3回投げて、表が3回出る確率をRで求めてみると、
> (1/2)^3
[1] 0.125
なので、12.5%。これは50%を超えていませんね。
では、4回投げる場合。表が3回出る確率と、表が4回出る確率を足せばいいですね。
4回投げて、表が3回出る確率は、(Cは組み合わせの記号だと思ってください)
(1/2)^4 × 4C3
ですね。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とか小数とか、そういうのを引数にするのは禁止ね)
じゃあ、いつ50%を超えるか、やっていきましょう。
> ProbMoreThan3(5)
[1] 0.5
> ProbMoreThan3(6)
[1] 0.65625
> ProbMoreThan3(7)
[1] 0.7734375
「確率が50%を超える」なので、正解は「6回」です。たぶん。
どのあたりが「ひっかけ」だったのでしょうか。
「3回以上」なのに、「ぴったし3回」の確率を求めしまうとか。
「50%を超える」なのに、50%になったとき(=5回)を答えてしまうとか。
それとも、何か別のひっかかる要素があって、私もまんまとそれにひっかかっているとか。
謎は深まります。
が、考えても分かる気がしないので、時間つぶしにグラフでも書いてみましょう。
n <- 3:20
p <- sapply(n, ProbMoreThan3)
plot(n,p)
abline(h=0.5, lty=2)
初めの方でぐっと上がって、それから1に漸近していくような感じですね。
「エレガントな問題解決」演習問題 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 × 4C3
ですね。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とか小数とか、そういうのを引数にするのは禁止ね)
じゃあ、いつ50%を超えるか、やっていきましょう。
> ProbMoreThan3(5)
[1] 0.5
> ProbMoreThan3(6)
[1] 0.65625
> ProbMoreThan3(7)
[1] 0.7734375
「確率が50%を超える」なので、正解は「6回」です。たぶん。
どのあたりが「ひっかけ」だったのでしょうか。
「3回以上」なのに、「ぴったし3回」の確率を求めしまうとか。
「50%を超える」なのに、50%になったとき(=5回)を答えてしまうとか。
それとも、何か別のひっかかる要素があって、私もまんまとそれにひっかかっているとか。
謎は深まります。
が、考えても分かる気がしないので、時間つぶしにグラフでも書いてみましょう。
n <- 3:20
p <- sapply(n, ProbMoreThan3)
plot(n,p)
abline(h=0.5, lty=2)
![]() |
n回投げて3回以上表が出る確率 |
初めの方でぐっと上がって、それから1に漸近していくような感じですね。
コメント
コメントを投稿