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

2010年8月17日 (火)

次こそは当ててみせる!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

|

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

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

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/217647/49165141

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

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