[PR]
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
プログラミング、3DCGとその他いろいろについて
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
昔アメリカ軍は核爆弾を海に誤って落として見失ってしまった時、ベイズを使って場所を見つけたといううわさを聞いたことがあります。というわけで、海の中から爆弾を見つけるゲームを作ってみました。
マス目をクリック:マスを探索し、爆弾があった場合は50%の確率でそれを見つけ出します。
マス目を右クリック:マスを探索し、爆弾があった場合は100%の確率でそれを見つけ出します。残り探索回数は3減ります。
顔マーク:ゲームをリセットします。
海のマス目の何処かに爆弾が落ちています。マス目をクリックして爆弾を探すゲームです。爆弾が見つかればクリアです。探せる回数は決まっていて左上に表示されます。これを使い切るとゲームオーバーです。
マスをクリックするとそのマスに爆弾があるか探索出来るのですが、爆弾のあるマス目をクリックしたからと言って確実に見つかるわけではありません――見つかる確率は50%です。よって、一度探したマス目に爆弾があったという可能性もあります。
マスを右クリックすると、「完璧な探索」を行います――そこに爆弾がある場合は確実にそれがわかります。ただし、右クリックで探索すると、残り探索回数は3減ります。
ヒントとして、そのマス目に爆弾がある確率を表示しています。この確率はプレイヤーが行った探索の結果によって更新されます。何度も同じ場所を探せばそこの確率はどんどん低くなっていきます。何度も探したのにないということはその場所にある確率は低いということですからね。代わりに他のすべてのマスの確率は上がります(ただし、一度確率が0になったらもう上がりません)。この確率の計算はいわゆるベイズ更新というやつで、新しい情報が来るたびに再計算できる柔軟さが売りです。
このプログラムを見ていて思ったのですが、現実世界で探しものをしている時は、ある場所に確実にないということをはっきりさせていく方がいいかもしれません。というのも、「ここにはたぶんないだろう」だと、別の場所を探したときにベイズ更新でせっかく下げた確率が上がり、最初に何のために探したのかよくわからないということになりかねないからです。「またさっきの場所を探してみよう」のくりかえしになってしまうかもしれません。