破壊屋ブログ

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

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

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

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

blog.livedoor.jp


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

ゲームのルール

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

プログラムの挙動

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

結果

このプログラムで百人の勝負を一万回繰り返してみました。勝利回数が多い数字は選択期待値が上がっていってバーストの可能性が高くなり、そうすると今度は選択期待値が下がっていくのです。で、結果がこれです。
f:id:hakaiya:20210217104850p:plain
なんてことはない。数字の大きさと勝率が比例するという普通の結果となりました。

一番勝率が高い数字は100

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

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

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

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

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

その他の傾向

このプログラムは選択期待値の設定をどうするかで結果が変わってしまう。画像は色々と試した中で、一番安定した結果です。プログラム上の仮想メンバーは72以下の数字を選ぼうとしない傾向が生まれました。
ちなみに50以下の数字で勝利することはあり得ないわけですが、面白かったのは

「50以下の数字を選ぼうとする仮想メンバーを作る」
⇒一万回繰り返しても、80以下の数字では絶対に勝てない。

「50以下の数字を選ぼうとしない仮想メンバーを作る」
⇒80以下の数字でも勝てる場合がある

という傾向があったことです。これは50以下の数字を選ばないと必然的に上位の数字のバースト確率が高まるんですね。その結果80以下の数字でも勝利できるようになるわけです。

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

というわけでタイトルの面接での「100以下の整数」問題の攻略法ですが、

  • 選ぶ数字は100一択
  • しかし数字はすぐに書かないで、面接官に「それって高い数字は、みんな被りますよねー」「勝てる確率が高い絶妙な数字を選べばいいわけですね」と質問するフリしてライバルへの意識誘導を行う。
  • 数字を書く時も「絶対100って書くやついるよなー、それで負けたらバカだよなー」と大きな声で独り言を言う。
  • さんざん悩んだフリをしてから「100」と書く。

です。あとは自分以外が100を選ばないことを祈るのみ。これが一番勝率が高い。

数字を読みあうゲーム

この面接の問題はゲーム性が乏しいですが、数字を読みあうゲームで「6ニムト」というものがあります。大雑把に説明すると、みんなで一斉に数字を出して並べて、6番目に並んだ数字を出した人が敗北というものです。
https://upload.wikimedia.org/wikipedia/commons/thumb/5/56/6_nimmt%21.jpg/800px-6_nimmt%21.jpg
6ニムトのWikipediaの画像。この場合81以上を出すと負ける。

超面白い傑作ゲームなのでオススメです。友達が出す数字を読み切るのがポイントですが、読み切れるときは自分も読まれているので、期待値計算のほうが重要だったりします。