誕生日についてのシミュレーション
誕生日が一年365日で一様かつ独立な100人をシミュレーションしてその中の誕生日が一致した人数の最大値を返す関数BD2を考えたいんですがどのようにすればいいのでしょうか。
またそのBD2を1000回実行するする方法も教えてください。
参考になるサイトを教えてくれるだけでもありがたいです。
に対しての回答プログラム(付値は ← に置き換えている)
BD2 ← function() {
#1~365の乱数(整数)を100個出す
dt ← as.integer(runif(100, 1, 365))
#集計
dt_tbl ← table(dt)
#大きい順に並べる
dt_tbl_s ← sort(dt_tbl,decreasing = TRUE)
#1番目にmaxの個数
return(as.integer(dt_tbl_s[1]))
}
x ← matrix(1:1000)
for (i in 1:1000) {
x[i] ← BD2()
}
x
「1~365の乱数(整数)を100個出す」なら,sample(365, 100, replace=TRUE) でよい
「1番目にmaxの個数」(日本語に不自由な人みたいだけど)なら,ソートしたりする必要はない。単に max(dt_tbl_s[1]) でよい
1000 個の要素を持つベクトルを用意するには,x ← matrix(1:1000) ではなく x ← numeric(1000) でよい
さらにその中の最大値も,ちゃんと max(x) で出そう
ということで,以下のような回答案。
BD2 ← function() {
max(table(sample(365, 100, replace=TRUE)))
}
BD2()
(ans ← replicate(1000, BD2()))
max(ans)