忍者ブログ

Memeplexes

プログラミング、3DCGとその他いろいろについて

数あてゲーム

1から20までの数字を当てるゲームをするとします。これは答えを知っている人とプレイヤーの二人で行い、プレイヤーは何回かyes/noで答えられる質問して数を当てるのです。ここで考えるのは、どういう質問をするのが一番効率よく答えを絞りこめるのか?です。


一気に絞り込む方法と、大雑把に絞り込む方法

誰もが思いつくやり方は、「それは1ですか?」「それは2ですか?」「それは3ですか?」を20まで続けることでしょう。これなら20回質問すれば、確実に答えがわかります。しかしもっと速く答えにありつける方法はないでしょうか?

別の方法として、「それは10より大きい?」という種類の質問が考えられます。先程の質問は直接数字が答えかどうか訪ねているのに対して、こちらは数字の範囲で聞いています。どちらが効率的でしょう?

まず1つずつ聞いていく質問は、うまく行けば一発で答えにありつける可能性はあります。もし答えが1だったら、最初の質問で一気に答えにたどり着けます。

しかしこれは、答えが1だったらというラッキーな条件付きです。実際にはそうでないことがほとんどで、質問は平均10回必要です。

いっぽう、範囲を絞っていく質問の仕方だと、5回あれば確実に答えにたどり着けます。

このやり方は一発で答えにたどり着く可能性は0ですが、平均質問回数は少なくて済みます。さっきの方法の半分です。

なぜ質問が少なくなるのでしょう?それは、こちらのほうが安定してに答えを絞りこめるからです。数字を一つ一つ質問していく方法は、当たったら一気に絞りこめるものの、当たらなかった時答えをほとんど全く絞り込めません。そしてほとんどの場合、当たらないのです。

いっぽう、質問によって範囲を半分に絞っていく方法は、当たっても当たらなくても確実に絞り込むことが可能です。一見のんびりしているようですが、実はこれが近道なのです。

拍手[0回]

PR