「前の記事」で指摘したことについて,その正しさを検証しておこう。
簡単なことだ。一行でできる。
> mean(replicate(1000000, sum(runif(100) < 0.1518244) >= 10))
[1] 0.950551
解説しておこうか?
runif(100) < 0.1518244
は,100 回試行して,設定した確率 0.1518244 を満たすかどうかの論理値ベクトル
sum(runif(100) < 0.1518244)
は,TRUE になった回数を数えれば,それは,アイテムを得られる回数
sum(runif(100) < 0.1518244) >= 10
は,得られたアイテムが 10 個以上であるかどうかの論理ベクトル
replicate(1000000, sum(runif(100) < 0.1518244) >= 10)
は,それを 1000000 回繰り返す。
mean(replicate(1000000, sum(runif(100) < 0.1518244) >= 10))
は,そのうち,成功した割合(0/1ベクトルの平均は,1である割合のこと)を表す。
結局,確率が 0.1518244 のときは,10 個以上のアイテムを得られる確率が 0.950551 ということ。
この数値は,試行ごとに変わるが 0.95 前後の値になることは簡単に確かめることができる。
正規近似は,近似に過ぎないこともわかる。
※コメント投稿者のブログIDはブログ作成者のみに通知されます