パズル
プログラマのための論理パズルに載っている問題を解いてみる。
0.5%の確率で被害にあう装置を使うとき、最初の50人の中に少なくとも1人が被害にあう可能性を求める。
import random def puzzle18(percent): if random.randint(0, 1000) < percent: return 1 else: return 0 i = 0 count = 0 total = 0 while i < 10000: count += puzzle18(5) if i % 50 == 0 and count > 0: total += 1 count = 0 i += 1 print total print float(total) / float(10000 / 50)
・実行結果
44
0.22
もっとスマートに書けるような気がするのだけど・・・。
頭がうんこだな俺。