2010年8月17日 (火)次こそは当ててみせる!
おはようございます。本日の当番、プログラマのY.Hです。
社内では、ゲームショーなどのイベントに出張に行った人からの
お土産やグッズなどが
社員に配布されることがあります。
ただし、どうしても数に限りがあるため、
その場合はアミダクジやジャンケンで抽選します。
先日も、社内でプレゼント抽選会があり
ジャンケンで買った人が商品をもらえるということで、
奮って参加したのですが、
……負けた…。
まぁ、たまたまですよ。たまたま!
続いて、その3日後、なんと臨時のプレゼント抽選会!
さらに前回賞品を貰った人は参加NGとのこと!
よし、人数も少なくなってるし、これはチャンス!
拳に気合を入れ、ジャンケンに臨みましたが、
……ま、また負けた…。
というわけで、最近運のないY.Hです。
ま、僕の運のない話はこれぐらいしておきますが、
このような当たる当たらないといった抽選処理は
プログラムでもよく使います。
昔、友人と一緒に作っていたゲームプログラムで
乱数を使ってアタリハズレを決定する部分があり、
そこを友人にチェックしてもらっていました。
そのうち友人から
「10回連続ハズレたんだけど、バグじゃない?」
と言われました。
よくよく聞いてみると、
アタリ30%、ハズレ70%の仕様なので、
10回したら3回は当たるだろう
と考えていたようです。
(プログラムの組みかた次第では、
10回中3回は必ず当たるようにもできますが、
ここではひとまずおいておきます。)
確率計算である以上、
アタリやハズレが続くこともありえるので、
プログラム的にも動作的にも問題ありません。
ならば、友人が不具合があるように感じたのは何故でしょうか。
その答えは試行回数が少ないからです。
試しに抽選を1万回行うプログラムを作成し、
実行させてみたところ、以下のような結果となりました。
---------------------
アタリ:2960回
ハズレ:7040回
---------------------
おおー、ほぼそれらしい値になったようです。
この結果を友人に見せたところ
納得してもらえました。
確率計算を使用したプログラムを作った場合、
普通に遊んでいると試行回数が少ないので、
どうしても不具合があるように見えてしまいます。
そのような場合に、上記のような
検証プログラムを作ることは、有効な手段です。
プログラムを作った本人は分かっていても、
それを正しく相手に伝える必要がありますから。
ちなみにホントに不具合の場合もありました。
例えば、ゲームを始めた時に毎回同じ結果が出てる!
といった場合は乱数の種を初期化していませんでした…。
というわけですので、
プレゼント抽選会で賞品が2回連続で当たらなくても凹みません。
プレゼント抽選会がある限り、
いつかはきっと僕にも賞品が当たるはずなのですっ!
| 固定リンク | コメント (0) | トラックバック (0)
「プログラマー」カテゴリの記事
- 技術交流の業(2019.03.07)
- 福袋争奪戦デビュー(2019.01.31)
- 温泉旅行(2019.01.24)
- ゲーセンの近況(2018.11.29)
- 健康的にプログラミングを続けるためのちょっとした習慣(2018.10.18)
この記事へのコメントは終了しました。
コメント