13日の金曜日

Wikipedia13日の金曜日」によると、13日は金曜日になる確立が一番高いのだそうです。

カレンダーは400年でループしていますが、その間に13日が何曜日になるか、Excelで数えたのがこちら

f:id:syaik:20171017213410p:plain

各曜日は400*12/7=685.7回以上出れば平均より多いことになります。

13日の金曜日は400年で688回現れて、最も少ない木,土曜日とは4回の差。100年に1回ペースです。
イタリアでは17日の金曜日が不吉だそうですが、こちらは685回。スペインでは13日の火曜日が不吉で同じく685回。このあたりの人は不吉回数が少ないのでラッキーですね。

何日に何曜日が多いかというのは今月のカレンダーを見れば分かりますが、29~31日はそうもいきません。
同じようにして数えてみると、29日は火曜と日曜、30日は月曜と水曜、31日は木曜が多いとのこと。

すなわち、確率的に最もありそうなカレンダーがこちら

f:id:syaik:20171017220207p:plain

 

関係ない話ですが、日曜始まりのカレンダーとスペースあるのに6段にしないカレンダーはマジで滅びてほしいですね。

コントラクトブリッジのオークション

今回のネタはコントラクトブリッジです。知らない人にはさっぱりだと思いますが、がんばって知らない人向けに書きます。

 

まず、以下のゲームを考えます。

1. 2人のプレイヤーが、それぞれ1~Nの数字の書かれたN枚のカードを持つ

2.プレイヤーは交互にカードを1枚ずつ出す

3. 最初のプレイヤーは好きなカードを出せるが、以降は直前より大きい数字を出す

4.カードが出せないor出したくない時はパスを宣言する

5.どちらかのプレイヤーがパスした時点でゲームを終了する

 

★ブリッジプレイヤーはここからしばらく読まなくていいです

 

このゲームの目的は勝敗を決めることではなく、自分の出したカードによって相手に情報を伝えることです。

例えば、最初の選択肢は1~Nとパスなので、N+1通りの情報を伝えることができます。次に相手がNのカードを出したりパスしたりすればゲーム終了ですが、そうでなければまたいくつかの選択肢が発生するため、さらに相手に情報を伝えることができます。

伝える情報はこの話には関係ありません。誕生日とか電話番号とか、数字で決められるものなら何でも良いですし、あらかじめ番号を振っておけばそれ以外も何でもです。

本当は双方向に情報を伝え合うのですが、今回は先攻プレイヤーが一方的に後攻に数値を教えることにします。

 先攻の動きを考える前に、後攻の動きは明らかに「先攻が何を出しても、それの一つ上の数字を出す(出せない時のみパス)」に確定します。後攻はただの置物なので、先攻の選択肢を減らさないことだけ考えるとこれしかありません。

この状態で、先攻プレイヤーはゲーム終了までに何通りの行動が取れるか、が今回の問題です。

 ※一応言っておきますが、本当のコントラクトブリッジはこんな無意味なクソゲーではありません。もっと奥深く頭を使うクソゲーです。

 

★ブリッジプレイヤーはここからどうぞ

 

N=1のとき、先攻の取れる手は1を出すかパス(以下、P)しかなく、それで終わりなので2通りです。

N=2のとき、先攻はP,1,2の3通りが選べます。1を選んだ場合のみ後攻が2を出しますが、次はPが確定なので選択肢が増えるわけではありません。3通りです。

N=3のとき、1手目はP,1,2,3の4通り。1を出したときのみ3とPの選択肢が増えるので、合計5通り

記号で表すとこんな感じ

N=1 : P,1

N=2 : P,1,2

N=3 : P,1→P,1→3 ,2,3

N=4 : P,1→P,1→3,1→4,2→P,2→4,3,4

 

数値の上下をひっくり返す、すなわち、前より小さい数字を出すゲームだとするとわかりやすくなります。以下、矢印を省略します。

N=1 : P,1

N=2 : P,1,2

N=3 : P,1,2,3P,31

N=4 : P,1,2,3P,31,4P,41,42

N=5 : P,1,2,3P,31,4P,41,42,5P,51,52,53P,531

続けていくとわかりますが、フィボナッチ数で増えていきます。

N枚のカードを持っているときはN-1枚の時の動きすべてが可能で、かつ最初にNを置いてからN-2枚の時の動きがすべてできる、と考えれば分かりやすいと思います。

 

とりあえず正式な証明は置いておいて、ゲーム終了時に先攻が出したカードから一つの数値を導き出す方法が必要です。例えば先攻が853Pと出したとき、これは何番だ、というのをさくっと計算できる方法を考えます。

N=4 : P,1,2,3P,31,4P,41,42  のように辞書順で並べた場合、Nが大きくなっても先頭は変わらず、常に末尾に新しい手が追加されていくことになります。このため、先攻の手は辞書順で番号を振っていくのが良さそうです。

P=0と読み替えて0から順に番号を振っていくと、N=3までは出したカードの合計がそのまま番号になるので良い感じです。

N=4でずれますが、4を5に読み替えると補正できます。同様に、N=5では4を5に、5を8に読み替えればOKです。

並べると

1→1

2→2

3→3

4→5

5→8

はい。これもフィボナッチ数です。

 

まとめると、

・N枚のカードでは、(N+2番目のフィボナッチ数)までの数値を伝えられる

・計算方法は、(出したカードの数値+1)番目のフィボナッチ数の合計

 

この後ちゃんとした証明を書こうと思ったのですが、既にありました。

「ゼッケンドルフの定理」というらしいです。Wikipediaに証明があるのでそっちを読んでください。

 

★ここ最後までからブリッジの話

1Cをアスキングの開始にすると14930352まで聞けます。電話番号とまでは行きませんが、JCBLナンバーくらいなら余裕ですね。

お誕生日コンベンションなら12stepあればOK。13step目をパスの代わりにすることで最終コントラクトを保証できます。1NTや2Cオープンに対して7NTを確信したときの5Dとかに入れておきましょう。

誕生日のパラドックス

誕生日のパラドックスというのがありまして、一言でいうと「23人いれば、50%の確率で同じ誕生日の2人組が存在する」というものです。「40人のクラスでは、90%の確率で同じ誕生日の2人組が存在する」とも言います。どっちも同じことですが、とにかく、誕生日が被る確率は直観よりもかなり高いってことです。

どういう計算をすればそうなるかってのはググればたくさん出てくるので省略します。Excelで計算したものがこちら。

f:id:syaik:20171009151607p:plain

この話がされる場合、必ず「一年は365日とします」という仮定がついて2/29生まれの人がかわいそうなので、366日でも試してみます。

f:id:syaik:20171009151938p:plain

全然変わりませんね。以降、一年は365日とします。

2人の誕生日が被ると運命的な感じがしますが、1日違いでもわりとびっくりします。1日違いも許すと、確率はどれくらいになるのでしょうか。
鳩の巣が半分になるので、365日を183日で計算したのと同じくらいか、ぶつかる幅が3倍になるので122日で計算したくらいか。人数が少ないうちは122側に近い感じだと思います。
50%を超えるのは、183だと17人、122だと14人なので、15人で50%超と予想。

100万回試行し、人数ごとの確率を出したものがこちら。

f:id:syaik:20171009153027p:plain

14人。というか、ほぼ122のときと同じでした。

20人なら80%、30人なら98%の確率で一日違いがいることになります。


ちなみに、誤差が0,1,2,3日の場合を同時に表示したのがこちら

f:id:syaik:20171009153212p:plain

直観との差でいえば、1日違いが一番インパクトありそうです。

 

おまけ

365以上で計算するとこんな感じ

f:id:syaik:20171009154033p:plain

対数的な感じですね。

1000人がかりなら、100万分の1の一致も難しくない確率です。
たまに、何かと何かが偶然とは思えないほど一致しているという話(ケネディリンカーンとか)を聞きますが、普通に偶然ですよってことも多いんだと思います。

 

桂馬跳び

高校の頃の先生は授業中に生徒を指名する順番を工夫していました。
席順や出席番号順に当てていくと、生徒は自分が当てられないことが分かってだらけてしまいます。緊張感を持ってもらうため、いつ誰が当てられるか分からない状態にしたいのですが、ランダムに当てるのは考えるが面倒だし主観が入りそう。
いろんな方法を試していましたが、その中に桂馬跳び法というのがありました。
生徒を指名したあと、次はその席から八方向に桂馬跳びの位置の席の人から指名するというもので、一度に8人の生徒にプレッシャーをかけることができてかつ移動力もある、なかなか悪くない方法だったようです。
ですがこれ、明らかに角の席が有利ですね。中央の人が8方向から狙われるのに対して角の人は2方向なので、4倍の差がつくんじゃないでしょうか。

実際に動かしてみました。
教室は6×6の36人、初期位置は真ん中として桂馬跳びに100万回指名します。45分授業なら1秒間に370回のペースです。

f:id:syaik:20171007200923p:plain

たしかに中央と角で4倍の開きがあります。その他の席も移動可能方向数に比例していますね。

これは一人お休みのとき。比較のため、指名回数は35/36で97万回です。質問には0.0026秒で答える必要があります。 

f:id:syaik:20171007201115p:plain


生徒を指名する際には同じ人ばかり指名しないようにするという暗黙のルールもあります。桂馬跳びに移動したあとすぐに戻ってくるのはかわいそうなので止めることにしましょう。
角の人の有利が加速するような気がします。

f:id:syaik:20171007201259p:plain

あれ、変わらないんですか。

 

そういえば、有利なはずの角の人も結構当てられていたような記憶があります。
桂馬跳び方は露骨に角が有利なので、角にいけるときは当てたい気持ちが入ってしまうのでしょう。
これは、角に行けるときは必ずそうする場合

f:id:syaik:20171007201445p:plain

当たる組と当たらない組の格差が激しい。

 

おまけ
指名格差が出ないようにするにはナイトツアーの動きをすれば良いですが、生徒にバレる可能性があります。
ナイトツアーを沢山用意して適当に選ぶ、って、そんなことをするなら最初から乱数表を持っていけば良い話ですね。

あと、これを使ってた先生は教室の前後左右ををループさせていたような気がしてきました。

黄金比

近似値の話の続きです。

以下は、黄金比こと(1+√5)/2の近似値の、分母500までのランキング

f:id:syaik:20171003003104p:plain

分母と分子に同じ値が何度も出てくるのは、フィボナッチ数列というのが関係しています。

フィボナッチ数列は、n番目の項をF[n]とした場合にF[n]+F[n+1]=F[n+2]となる数列で、lim(n→∞)F[n+1]/F[n} = φ(黄金比)という特徴があります。証明はWikipediaとか見てください。

となると、「黄金比の近似値を探す最も良い方法は、フィボナッチ数を何度か計算してF[n+1]/F[n]とすることである」という仮説が立つので、今回はこれを考えてみました。

 

F[n+1]/F[n]とφとの差をd[n], F[n+1]/F[n]=Fとすると、

d[n]    = | φ - F[n+1]/F[n] |

d[n+1] = | φ - F[n+2]/F[n+1] |

       = | φ - (F[n+1] + F[n] ) / F[n+1 |

       = | φ - 1 - F[n]/F[n+1] |

       = | 1/φ - 1/F |        (φ-1 = 1/φ)

       = | (φ-F) / φF |

       = d[n] / φF      (1<φ,1<F)

以上より、d[n]はnが大きくなる毎に必ず小さくなる、単調減少というやつです。F[n+1]/F[n]を最適近似だと思ってたら1個前のF[n]/F[n-1]の方が良かった、ということはありません。

 

次に、x[n]を d[n] = x[n]/F[n] とします。これは、φをF[n+1]/F[n]で近似した際の誤差がどれくらいあるかを分子の差で示したもので、0.5を超えていれば他にもっとφに近くなる分子が存在するということです。

d[n+1] = d[n] / φF なので、

x[n+1]/F[n+1] = x[n]/F[n] * F[n]/F[n+1] * 1/φ
x[n+1] = x[n]/φ

x[n]も単調減少でした。つまり、F[n+1]/F[n]と最適近似の誤差はnを大きくする毎に小さくなり、最終的には常に分母に対して最適な分子を出せるようになるということです。

なお、上記の計算ではフィボナッチ数列の初期値を限定してません。通常の数列は最初の2項が0,1ですが、これを変えて1,3,4,7,11,...の様に構成しても同じことが言えます。

 

近似値

円周率の近似で355/113がとても優秀という話でしたが、他の数も近似してみました。355/113より優秀な近似はあるのでしょうか。

まずは√2。10000までのランキングは以下ですが、ぱっとしません。

f:id:syaik:20171002234158p:plain

ちなみに、√2の1000までのランキングを見てみると

f:id:syaik:20171002234304p:plain

分母と分子にちょくちょく同じ数値や2倍の関係の数値が出てきています。これは√2の逆数が√2自身の1/2だからで、平方根勢はみんなこんな感じです。

さて次は√3のランキング、とやってこうと最初は思ってましたが、平方根勢はどれをとっても面白い結果は出なかったので省略します。その後もeとか三角関数とかとかいろいろやってみましたが、355/113に匹敵するものはなかなか現れませんでした。

惜しいものとしては、1°:1radの4068/71(精度5.31)が1500までトップだったとか。

6^(1/3)に対して467/257(精度7.53)が65617までトップだったのは、πに対して16604までトップだった355/113(精度6.57)を超えている感じもしなくもないですが、だから何って感じは拭えないですね。何が出たら拭えるんですかね。

 

適当に探すととハズレばかりなので何か無いかとWikipediaをぶらぶらしてたら、「ほとんど整数」というページが良さそうな感じです。

e^(π√163)=262537412640768743.99999999999925007... とか書いてあって、数学やべぇなって思いました。

このページ内に書いてある中で、単純な形ながら精度が高そうだったものがこちら。π^4の近似の、10万までのランキングです。

f:id:syaik:20171003001031p:plain

おお、すごい。

というわけで結論

・分母2ケタ上とやりあえる近似値は かなり少ない

・その中でも355/113は非常に優秀

・でも、もっとすごいのもいる

 

おまけ

小数点につづけて自然数を順番に書いたもの(0.123456789101112...)をチャンパーノウン定数というのですが、これの近似が反則級なんですよね。

Wikipediaでは10/81=0.123456789123456.. と 1111111111/9000000000 = 0.123456790111...が紹介されていますが、分母81の時点で10ケタ合わせてきて、そこから精度を2ケタ上げるためには分母は8ケタも上げないといけない。ちょっと定数の定義が10/81に有利すぎてねぇ...。

 

ところで

以下は黄金比こと(1+√5)/2の近似です。(500まで)

f:id:syaik:20171003003104p:plain

√2のランキングと同じく、分母と分子に同じ数字が出てきています。その理由は√2の理由と同じような方向性なのですが、書いてたら長くなったので別の機会ということで。

有名な話です。上のランキングを眺めてると気づくかもしれません。

モンティ・ホール問題

モンティ・ホール問題っていうのがあります。説明すると長すぎるのでここでは割愛します。
この問題は全部明らかになってるんですが、せっかくなのでExcelで検証してみました。

f:id:syaik:20170930102542p:plain

確かに計算通りの結果がでました。


ところであれってバラエティ番組が元ネタらしいですが、正しい行動が知れ渡った後はどうなったんでしょうかね。
やらなくなっちゃったのか、やり方を変えたのか、なんとなく気になる。

やり方を変えるならどんな風にするのがいいか考えてみました。
Wikipediaには変形版の紹介ががありますが、扉を開けないことがあるとか、アタリ扉を開けたらノーゲームとか、そこを変えちゃあお終いよって感じのばっかりです。

というわけで、ポイントは以下の3つ
・司会者はかならず扉を開ける
・途中でアタリの場所が判明しない
・扉を変更してもしなくてもアタリを引く確率が50%
さて、どうすれば良いでしょうか。

 

私が考えたのは、以下の方法です。
1. 回答者は扉を1つ選ぶ
2. 司会者はハズレ扉からランダムに1つ開ける。回答者が選択した扉を開けることもある
3. 回答者は扉を変更してもよい。選択していた扉が開けられた場合は残り2つから1つ選ぶ

1の選択は2に影響しないわけで完全に無意味です。単にアタリとハズレの2つから1つを選ぶだけなので、確率は50%。
無意味な行動である手順1も、「これがアタリだと思う」→「残念、ハズレです」ってなったら悔しさもありながらセカンドチャンスを貰えたような気がして、まあテレビに出るような芸能人なら盛り上げてくれるんじゃないですかね。

この方式もExcelで検証してみます。

f:id:syaik:20170930102943p:plain

はい、50%でした。

そして、今見直したらこれはWikipediaにのってる変更ルール4と同じでした。