トラック
/
Elixir
Elixir
/
演習
/
不可解な誕生日
不可解な誕生日

不可解な誕生日

中級

はじめに

大学を卒業したばかりで、友人や家族とお祝いするために大きなパーティーを開きます。 70人以上が集まり、その中には少し風変わりなTedおじさんもいます。

いつものいたずらのひとつとして、Tedおじさんは、この部屋の少なくとも2人が同じ誕生日であると£100賭けてきます。 そんなはずはありません。誕生日の可能性は集まった人数よりずっと多いからです。そう思い、自信をもってその賭けに乗ります。

ところが、驚いたことに、32人分の誕生日を集めただけで、すでに同じ誕生日の2人組が見つかってしまいました。 負けを認めてTedおじさんに£100を渡しますが、何かが引っかかります。

翌日、好奇心には勝てません。 インターネットで少し検索すると、誕生日のパラドックスにたどり着きます。そこには、23人いるだけで同じ誕生日が存在する確率が50%を超えると書かれています。

ああ、_それ_がTedおじさんがあんなに自信満々だった理由なのですね。

今度は形勢を逆転させようと、ほかのパラドックスを調べ始めます。次は、賭けを持ちかけるのは_こちら_の番です。

Note

誕生日のパラドックスは真実のパラドックスです。直感に反しているように感じられても、実際には正しいのです。

説明

この演習のタスクは、誕生日のパラドックスの確率を見積もることです。

そのためには、次のことを行います。

  • 生年月日をランダムに生成します。
  • ランダムに生成した生年月日のコレクションの中に、同じ誕生日のものが少なくとも2つ含まれているかどうかを調べます。
  • グループの人数を変えながら、その中に同じ誕生日の人が少なくとも2人いる確率を見積もります。
Note

生年月日は生まれた日そのもの(年・月・日)を指し、誕生日は月と日だけを指します。月と日は毎年巡ってきます。 同じ月と日の生年月日は、同じ誕生日にあたります。

Caution

誕生日のパラドックスは、次のことを前提としています。

  • 誕生日は365通りある(うるう年はありません)。
  • どの誕生日も同じ確率で起こる(一様分布)。

実装はこの前提に従う必要があります。

GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
Elixir Exercism

不可解な誕生日を始める準備はできましたか?

Exercismに登録すれば、58個のコンセプト168個の演習、そして本物の人間によるメンタリングとともに、Elixirを学んでマスターできます。すべて無料です。