チンチロリンハイボール問題を無意味にPythonで解く
さて
Yahoo!ニュースで目にしたこの話題
一方、昨日のことでありますが、オフィス近所の初めて入った食堂でランチを喰っていたところ、以下のようなプロモーションを見かけ、改めて「ギャンブルに関するリスク教育」の必要性を感じた次第です。
として、筆者が例示していたのがサイコロを2つ振って、出た目に応じてハイボールの値段を無料・半額・倍額にするというゲーム。
【更新しました】 「チンチロリン・ハイボール」に見る我が国におけるギャンブル教育の必要性: カジノ合法化に関する100の質問 https://t.co/cveeCAzv2S pic.twitter.com/5iZ7oA6D9v
— 木曽崇:「日本版カジノのすべて」発売中 (@takashikiso) 2016年4月22日
合計がゾロ目なら無料
合計が偶数なら半額
合計が奇数なら倍額
と言うルールで、これは客が損するよねと言うお話し。
敢えてPythonで解く
元記事にも計算が書いてあるが、この問題を敢えて無意味にPythonで解いてみる。組んだプログラムは以下の通り。
HiBall = 0 for i in range (1,7): for j in range (1,7): if i == j: HiBall = HiBall elif (i + j)%2 == 0: HiBall = HiBall + 175 else: HiBall = HiBall + 700 print HiBall/36
2つのサイコロの出目の合計を全て検証し、ハイボールの価格の期待値を求めている。ハイボールの値段は元記事と同じく350円と設定してある。
出てきた答えは408円であり、明らかに客側が損する仕組みになっている(元記事の通り)。
というか全てのギャンブルの期待値は1以下なのは自明(そうでないと胴元が儲からない)なので、ギャンブルをすること自体がリスクだと思っている。
追記:値段も量も倍の場合
id:fatmongerさん、id:mobile_nekoさん、id:nanjodemoさん、id:senriiiiiさん、id:sugatareijiさんらから、値段が倍の時は量も倍にしているとの指摘を頂いた(元の記事でも一般的には倍額倍量のところ、筆者が訪れた店は倍額等量だったので損だと指摘している)。
つまり、
合計がゾロ目なら無料
合計が偶数なら半額
合計が奇数なら倍額で、倍量
この場合は直感的に損がないように思えるが、この条件でプログラムを組み直してみると。
HiBall = 0 Glass = 0 for i in range (1,7): for j in range (1,7): if i == j: HiBall = HiBall Glass += 1 elif (i + j)%2 == 0: HiBall = HiBall + 175 Glass += 1 else: HiBall = HiBall + 700 Glass += 2 print HiBall/Glass print Glass/36.0
一杯あたりの期待値は272円となり、客の側から見るとかなりお得感が出てきた。だいたい8割がけの値段になっている。
ではお店の立場では損がないのかと考えてみると。実は1回の注文あたり1.5杯分の注文が期待される計算になるのだ。1杯あたりの単価は安くなるものの、その分1.5倍売れれば丸儲けだよね。
もともとハイボール原価なんてタダみたいなもんだろうし。
と言うわけで、このチンチロリンキャンペーンを考えた人は頭が良いなと思った次第。
では