宝クジのシミュレーションのようなものは 簡単なプログラミングで実験することができる。 以下のような航空機座席問題はどう解けば良いだろうか?
航空機座席問題
  • 100人乗りの飛行機があり,乗客は100人いる
  • 搭乗券には席番号が書かれている
  • 最初に乗った客がチケットをなくしたので適当に座ることにした
  • 次の客は自分の席が空いていればそこに座る,埋まっていたら適当な席に座る.次も同じ...
  • 最後の客が自分の席に座れる確率は?

この答が直感的にわかる人は少ないだろうが、よく考えれば計算して納得することはできる。 しかしシミュレーションすれば大体の答はすぐに判明する。

上の問題はよく考えれば答がわかるのだが、少し変えた以下の問題だとどうだろうか。

航空機座席問題2
  • 100人乗りの飛行機があり,乗客は100人いる
  • 搭乗券には席番号が書かれている
  • 99%の人はきちんと自分の席に座ろうとするのだが、1%の人は空いてる席に勝手に座る
  • 最後の客が自分の席に座れる確率は?
これもシミュレーションすれば答はすぐわかるが、 シミュレーションせずに頭で考えて答を出すことは難しいだろう。

このように、ちょっとしたプログラミングができれば問題をすぐに解けるのにプログラミングできないとわからないままになるような問題は多い気がする。 宝クジのシミュレーションのような世の中のちょっとした疑問や 航空機座席問題のようなクイズを楽しく解きながらプログラミングを勉強するような入門本があればいい気がする。

(こういう問題を Wiki に集めています。 招待URL から登録すれば編集もできるのでご興味ある方はぜひどうぞ)