2014年10月27日月曜日

確率コラム『誕生日パラドックス』 ~体感と実際は違う><!

当ブログ、毎度更新が不定期なので・・・
たまに、記事の書き貯めみたいなのをしている時があるのですよね。
でも、書き貯めを計画的に出来る人ならそもそも不定期更新にはなりませんよね?(ヤレヤレ
昔、「確率を考える」とかいう謎シリーズをやっていた頃のやつだと思います^^;w
今回のお題は・・・
「確率って、実際の感覚と額面とでは随分とずれていることがあるんだなー」というお話。
誕生日の話から、後半は真面目に勉強すると大学の情報理論相当の内容になります。
ドヤ顔で記事にしていますが、有名なネタですので小噺程度に^^

     ◆     □     ◆

表題の「誕生日パラドックス」とはなんぞや?
それは、ある集団の中で同じ誕生日である人間が2人以上いる確率ってどれぐらいなの?
という問題です。

学生時代を思い出してみてください。
あなたの学校では、1クラスが40人学級だったとします。
クラスメイトで、自分と同じ誕生日の人っていましたか?

・・・
・・・・・・

いたかもしれませんが、1年は365日もあるのです。まあなかなかいないでしょう。

ですが。
誰でもいいので、同じ誕生日のクラスメイトのペアが居ないかどうかを探してみると。
実は確率的に計算すると、80%を超える確率で同じ誕生日ペアは存在します
運命でもなんでもありません。そういうものなのです。

実際に計算してみましょう。
計算の仕方は、至ってシンプルです。
100%から『クラスメイトが全員異なる誕生日である確率』を引けばいいのです。

いきなり40人だとややこしいので、まずは3人ぐらいにして考えましょう。
3人のうち、まず適当に一人を選びます。
その人の誕生日が、例えば1月1日、元旦だったとします。
では・・・2人目が、誕生日が元旦ではない確率は?

364/365

ですね?
2人目の誕生日が、仮に7月7日、七夕が誕生日だったとします。
その次、最後の3人目の誕生日が、元旦でも七夕でもない確率は??

363/365

です。
では、「3人の誕生日がばらばらである確率」は、

364/365(2人目が1人目と被らない)×363/365(3人目が前の2人と被らない)

となるので・・・求めたい確率である、
3人グループの中で同じ誕生日である人間が2人以上いる確率は、

1 - (364/365)×(363/365)

で求めることが出来ます。
計算すると・・・0.0082。およそ0.8%です。
IXAで金くじから天が出る確率って、wikiによるとこんなものらしいですね(笑

これを一般化します。
クラスメイトがn人いるとすると。
上と同じような要領で式を作っていくと・・・
n人グループの中で同じ誕生日である人間が2人以上いる確率は、

1 - (364/365)×(363/365)×(362/365)×・・・×{(365-n+1)/365}

となります。
文字が入るとややこしいですが、要は365日から選べる日数が減っていくわけですね。
2人目は、1人目の誕生日以外の364日。
3人目は、前の2人の誕生日以外の363日。
4人目は、先の3人の誕生日以外の362日。
・・・・・・
n人目は、先の(n-1)人の誕生日以外の{365-(n-1)}日。

これを、nの値を横軸、縦軸を確率にしてグラフで表現すると。
こうなります。(wikiよりお借りしました^^;;)

Number of people(クラスメイトの人数)が増えていくにつれて、
Probability of a pair(誕生日が同じペアが存在する確率)は急激に高くなっていきます。

グラフによると、クラスメイトの人数が23人の時、ちょうど確率は50%になります。
70人を超えると、確率は99%を超えます。
当たり前ですが、366人いれば100%になります。
適当に集めた365人が全員バラバラの誕生日だった、というのは奇跡的な確率であり得ますが、366人目はどう頑張っても誰かと被りますよね?
あ、うるう年だから今年は1年が366日だよ☆ というのは無しでw
(この、99%から100%までが長い、というのも一つ隠れたポイントとしてあったりします。)
これは、普段の日常生活から考えるとかなり意外な結果ではないでしょうか?

何が言いたいのかと言えば。
目測で考える理屈、というのは極論あてにならないということです。
・・・ブーメランもいいとこです(苦笑
プロイクサーを70人集めてオフ会をすれば、そのうちの誰かと誰かは、同じような不幸自慢をほぼ100%持っていて、傷を舐め合うことが出来るということです(違う
その誰かがあなたであるとは一言も言っていない、というのがこのパラドックスのミソですね!

     ◆     □     ◆

この誕生日理論、実は暗号理論でかなり重要な役目を持っています。

暗号というのは、要は「開け、ごま!」のことです。
呪文(鍵)を知らない人は、中に入れないのです。セキュリティ技術には欠かせないものです。
ある扉は「開け、ごま!」でOKですが、
ある扉は「開け、ナス!」じゃないと開かない、とかある訳です。
呪文と扉はかならずペアになっていて、間違った呪文では決して扉は開いてはいけません。

しかし。
完全完璧な門番はいません。
デジタルの世界では、とても想像ができないぐらい大量の扉があります。
全ての扉が、それぞれ別々のたったひとつの呪文でしか開かない、
なんてことを確認して回ることは膨大過ぎて不可能です。
あくまで、理論上は上手く行っているハズだ、というテイで我々は日常を生活しています。

そこで、誕生日理論です。
乱暴な話、とりあえず似たような呪文を知っている人を沢山集めて、
それらの人に、順番に手当たり次第にそこら中の扉に呪文を唱えてもらいます。
ゴマ、ナス、キュウリ、トマト、カボチャ、キャベツetc・・・
根気良く続けて行けば、案外簡単に“呪文は違っても、何故か同じように開く扉”が見つかるかもしれない、という理論なのです!(これを暗号理論では衝突と言います。)
誕生日の場合は、365通りの総パターン数があるうち、
23人に誕生日を聞いて回った時点で、50%の確率で同じ誕生日のペアを見つけることが出来るのでしたよね?
総パターン数に比べて、随分と少ない人数で衝突が発生してしまうものなのです。

この比率で行けば、仮に100万通りの扉があっても、
約1250回の試行(=手当たり次第に呪文を扉に唱える)をすれば、50%の確率で衝突を起こすことが出来ます。
かなり議論の飛躍を感じるところかもしれませんが、そこはご容赦ください。
全世界中で、どの鍵が今作られて、誰に割り当てられているのかを総まとめしている影の大データベースがあって、みんなそこを見て“ここに載っていない鍵を作ろう!”と思って作るわけではないのです。非常に大きい数になると、誕生日と同じようなものです。
こうすれば暗号が作れますよ、っていう理論があって、その暗号の素がなるべく偏りが無く生成されるように、なるべくランダムに作ろう、ぐらいなものなのです。

『ある特定の人の家の扉を開けたい』
というのは難しくても、
『誰の家の扉でもいいから、誰かの知っている呪文を使って開けたい』
というのは、総当たりでも思っているより簡単にできてしまいます。
※コンピュータの電算速度をもってすればという前提のある話です><w

その開けられる扉が狙った家の扉ではないかもしれないなら、意味ないんじゃないの?
と思われる方もいるかもしれませんが、これはこれで大問題なのです。
そのような、同じ扉を開ける異なった呪文のペアを見つけることが出来れば。
詳しく書くと数式サラダになりますので(ていうか独力では書けないのでw)、平たく書くと。
その異なった呪文の不一致の部分は、
A. 語句がピッタリ一致している部分とは違う役割を果たしているのか
B. ただの飾りなのか
のどちらかであることが特定できますよね?
その暗号の仕組み、鍵がどういう風な仕組みで作られているのか、という部分を逆算(=解析)するヒントが分かってしまうのです。(これを誕生日攻撃と言います。)

またIXAで例え話をすると。
以前の「確率を考える」シリーズで、
くじ等の確率には「疑似乱数」が影響しているんだ、という話をしました。
本気でIXAが確率詐欺しているのかを確かめてみようと考えるならば。
勿論、そんなことが容易くはできませんが・・・
IXAの中で、乱数がどのように生成されているのか、その仕組みを知るために、

とりあえず膨大なログを集めて、それから有効と思われるような「有意の一致」を探す

というのが広義の誕生日攻撃にあたるわけです。

ある人曰く「メンテナンス明けはいいカードが出やすい」
ある人曰く「白くじから序ばっかり出る時には、逆に金くじでは当たっているんだ」
ある人曰く「安国寺チャンスはダブルプッシュでしょ!」

もうお分かりですね?
誕生日は、365通りでした。
プロイクサーを何人集めれば、「この中で安国寺チャンスで天を引いた人挙手~ノ」
と呼び掛けて、複数人が手を挙げるのでしょうか?

・・・別に悪いとは言っていませんよ?w
こういう特徴を、何かしらの周期、類似のよくある乱数アルゴリズムの特徴点と照らし合わせて。
不要な条件を上手く濾過して。(メンテ明けに安国寺を引いた後で天を引いたのはどっちの御利益なのかを正しく判断して、ということですね。平たく言えば。)
実際にそれを検証&試行錯誤を限りなく繰り返せば、
『くじ必勝法』が作れる可能性は・・・ゼロとは言いません。

信じなければイワシの頭も何にもはじまりませんからね。

4 件のコメント:

  1. こんにちは

    久しぶりに覗いてみました。


    私の場合、1-3期目くらいは
    1)午前6時台に引く (当時は、午前5時からリセット?されるからと言われた)
    2)出城陥落したときに引く (逆に居城陥落時はよくなかった記憶がありますね)
    3)メンテ後は15分あけてから引く (アクセスが集中しているのでリアリティ低いのしか出ないとか)
    でしたが、その後は
    1)新規武将カードが出たら引く (これはみなさんがやってますね)
    2)ボタン長押し (これも、有名な話で・・)
    がいい結果を出してる印象です。
    あ、でも先月は居城陥落時にお詫びくじを引いたらいいのが出ました^^

    返信削除
    返信
    1. お久しぶりですたかのぶさん~ノw

      それぞれ、皆様が持っているジンクスみたいなのがありますよね^^
      私も昔から色々とやってきましたよ~!
      合戦終戦後の2時22分に引く、とか真顔でやっていた人間が、
      「理論的に検証するとすれば・・・
      有効と思われるような「有意の一致」を探すしかないんや!!
      統計的に検定しないとダメなんや!!」
      とか言えるようになるというのはある意味、自分としても成長していると思わなくも・・・ないです(苦笑
      良かったことや悪かったこと、それぞれにインパクトのある記憶って自分の中で重みづけが変わってきますからね。。
      個人的にリアルでも接している問題なのですが、なにかを定量的に分析する時に、いかに客観的な指標を用意して、信頼性の高いデータを根気よく集めることが出来るのかが大事なのだなーと(何のコメントだw

      削除
  2. のらりくらり2014年10月28日 10:49

    おいらは、メンテの後の0時に引くと良いのが出た記憶が有りますが
    それ以降実践していませんwww
    同じ誕生日の人なら、元同盟員に居ますよ~
    ひださんとは今は同じ同盟に居ますけどねww

    籤は、何個かのでっかいテーブルをメンテ毎に割振りされてそれを一生懸命複数人で回しているとおいら思っています。
    何せ、メンテ終わるたびに籤運がかなり違うと実感しています。

    返信削除
    返信
    1. 引ける人は引くんですよ理屈抜きに!!(泣
      確かに、でっかいテーブルのイメージはあながち間違っていない気がしますね。それが、上の話で言うseedというやつのイメージですから。確率や統計のお話には、色々と面白い現象があって調べてみたら楽しいですよ?w
      勝つ人は勝つし、負ける人は負ける、なんて真顔で言っている法則があったりします^^;

      ちなみに、来期の返事はまた今期もギリギリになりそうです><w
      9期にもなって、最悪てきとーにやっててきとーに離反して、てきとーに面白そうな方々を探せばいいやでやっている自分も如何なものかと思うんですが。。w

      削除