裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

いい加減な解答もあるなあ

2013年07月23日 | ブログラミング

誕生日についてのシミュレーション

誕生日が一年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)

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« バブルプロットの記号の大きさ | トップ | 疑似相関 »
最新の画像もっと見る

コメントを投稿

ブログラミング」カテゴリの最新記事