« Beyond the Dead Center | トップページ | 慣れと能力発揮 »

2010年8月17日 (火)次こそは当ててみせる!

おはようございます。本日の当番、プログラマのY.Hです。

社内では、ゲームショーなどのイベントに出張に行った人からの
お土産やグッズなどが
社員に配布されることがあります。
ただし、どうしても数に限りがあるため、
その場合はアミダクジやジャンケンで抽選します。

先日も、社内でプレゼント抽選会があり
ジャンケンで買った人が商品をもらえるということで、
奮って参加したのですが、
……負けた…。

まぁ、たまたまですよ。たまたま!

続いて、その3日後、なんと臨時のプレゼント抽選会!
さらに前回賞品を貰った人は参加NGとのこと!
よし、人数も少なくなってるし、これはチャンス!

拳に気合を入れ、ジャンケンに臨みましたが、
……ま、また負けた…。

というわけで、最近運のないY.Hです。

ま、僕の運のない話はこれぐらいしておきますが、
このような当たる当たらないといった抽選処理は
プログラムでもよく使います。

昔、友人と一緒に作っていたゲームプログラムで
乱数を使ってアタリハズレを決定する部分があり、
そこを友人にチェックしてもらっていました。

そのうち友人から
「10回連続ハズレたんだけど、バグじゃない?」
と言われました。

よくよく聞いてみると、
アタリ30%ハズレ70%の仕様なので、
10回したら3回は当たるだろう
と考えていたようです。

(プログラムの組みかた次第では、
 10回中3回は必ず当たるようにもできますが、
 ここではひとまずおいておきます。)

確率計算である以上、
アタリやハズレが続くこともありえるので、
プログラム的にも動作的にも問題ありません。
ならば、友人が不具合があるように感じたのは何故でしょうか。

その答えは試行回数が少ないからです。

試しに抽選を1万回行うプログラムを作成し、
実行させてみたところ、以下のような結果となりました。

---------------------
アタリ:2960回
ハズレ:7040回
---------------------

おおー、ほぼそれらしい値になったようです。

この結果を友人に見せたところ
納得してもらえました。

確率計算を使用したプログラムを作った場合、
普通に遊んでいると試行回数が少ないので、
どうしても不具合があるように見えてしまいます。


そのような場合に、上記のような
検証プログラムを作ることは、有効な手段です。
プログラムを作った本人は分かっていても、
それを正しく相手に伝える必要がありますから。

ちなみにホントに不具合の場合もありました。
例えば、ゲームを始めた時に毎回同じ結果が出てる!
といった場合は乱数の種を初期化していませんでした…。

というわけですので、
プレゼント抽選会で賞品が2回連続で当たらなくても凹みません。
プレゼント抽選会がある限り、
いつかはきっと僕にも賞品が当たるはずなのですっ!

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2010/08/post-e0db.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

« Beyond the Dead Center | トップページ | 慣れと能力発揮 »

プログラマー」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: 次こそは当ててみせる!:

« Beyond the Dead Center | トップページ | 慣れと能力発揮 »