破壊屋ブログ

ネタ系映画ブログです。管理人はこの人→http://hakaiya.com/giccho

面接での「100以下の整数」問題の攻略法

哲学ニュースにあったこの問題が面白いです。

面接官「100以下の整数で一番大きな数を書いた人を採用します。ただし、他の人と被ったらアウトです。ライバルは100人いるとします。」

blog.livedoor.jp


面接や学校の試験で実際に出されたことがある問題みたいですね。ジャンルとしては「囚人のジレンマ」と呼ばれるゲーム理論です。
このルールで本気でやったら一番勝率が高い数字は何だろうか?プログラムを作って検討してみました。

ゲームのルール

  • 一番大きい数字を選んだ人が勝利、それ以外は敗北。
  • 一番大きい数字を選んだ人が2人以上いる場合はバーストとして敗北。
  • バーストの場合は、その次に大きい数字で再びバーストかどうか判定する。これをループする。

プログラムの挙動

  • 百人の仮想メンバーを用意する。(101人じゃないのかよ!というツッコミは無し)
  • 百人は1から100までの数字を選ぶ。この際に仮想メンバーは勝てる数字を選ぶ傾向にある。
  • 数字には選択期待値が設定されており、仮想メンバーは選択期待値が高い数字を選ぶ傾向にある。
  • 勝利した数字は選択期待値が上がり、敗北した数字は選択期待値が下がる。

結果

このプログラムで百人の勝負を一万回繰り返してみました。勝利回数が多い数字は選択期待値が上がっていってバーストの可能性が高くなり、そうすると今度は選択期待値が下がっていくのです。で、結果がこれです。
f:id:hakaiya:20210217104850p:plain
なんてことはない。数字の大きさと勝率が比例するという普通の結果となりました。
このプログラムは選択期待値の設定をどうするかで結果が変わってしまう。↑の画像は色々と試した中で、一番安定した結果です。プログラム上の仮想メンバーは72以下の数字を選ぼうとしない傾向が生まれました。

一番勝率が高い数字は100

まあ、当たり前ですね。100はバーストさえ起こさなければ必ず勝てる。ただ100のバースト確率は85%と非常に高い。まさに一か八かのギャンブルです。

数字が低いほど勝率が下がる

「100未満の数字を出す」ということは、自分よりも高い数字を出した人が全員バーストしないと勝利できません。つまり数字が低いほど勝利が難しくなります。

  • 93以下の勝率は5%未満
  • 79以下の勝率は1%未満
  • 52以下の勝率は0%

53を出して勝てたゲームが一度だけあったのです。

面接での「100以下の整数」問題の攻略法

というわけでタイトルの面接での「100以下の整数」問題の攻略法ですが、
大きな声で「じゃあ私は100を選ぶ!」と叫んで実際に100と書く。そうすれば、あなたを負けさせるためには誰かが自分が犠牲となって100を書くしかない。全員が100を避ければあなたの勝ちです。