![見出し画像](https://assets.st-note.com/production/uploads/images/145498017/rectangle_large_type_2_5e009d736c31a9e8f199871de3190567.jpeg?width=1200)
宝くじ1等当たるまで買い続けたら破産する説をpyhtonで検証してみた
今回はロト7を例にやってみます。
夢の6億円が当たったらと思うとわくわくしますよね!!
実際に1等当たり続けるまで買うとしたらどうなるのか、現実では怖いのでpyhtonでシミュレーションをしました。
コードは以下になります。
import random
def generate_winning_numbers():
"""当選番号を生成する関数"""
return set(random.sample(range(1, 38), 7))
def generate_bonus_number(winning_numbers):
"""ボーナス数字を生成する関数"""
all_numbers = set(range(1, 38))
return random.choice(list(all_numbers - winning_numbers))
def purchase_loto7_ticket():
"""ロト7のチケットを購入する関数"""
return set(random.sample(range(1, 38), 7))
def check_winning_level(purchased_numbers, winning_numbers, bonus_number):
"""当選レベルをチェックし、賞金を返す関数"""
matched_numbers = len(purchased_numbers & winning_numbers)
if matched_numbers == 7:
return 600000000, "1等当選! 賞金:6億円"
elif matched_numbers == 6:
if bonus_number in purchased_numbers:
return 7300000, "2等当選(ボーナス数字一致)! 賞金:730万円"
else:
return 730000, "3等当選! 賞金:73万円"
elif matched_numbers == 5:
return 9100, "4等当選! 賞金:9,100円"
elif matched_numbers == 4:
return 1400, "5等当選! 賞金:1,400円"
elif matched_numbers == 3:
if bonus_number in purchased_numbers:
return 1000, "6等当選(ボーナス数字一致)! 賞金:1,000円"
return 0, "外れ"
def simulate_loto7():
"""ロト7の抽選で1等が当たるまでのシミュレーションを行う関数"""
cost_per_ticket = 300 # ロト7のチケット1枚の価格
winnings = 0 # 獲得賞金の累計
total_spent = 0 # 購入したチケットの金額累計
tickets_bought = 0 # 購入したチケットの枚数
while True:
tickets_bought += 1
total_spent += cost_per_ticket # 購入金額の累計
# 当選番号とボーナス数字を生成
winning_numbers = generate_winning_numbers()
bonus_number = generate_bonus_number(winning_numbers)
# チケットを購入していると仮定し、当選判定
purchased_numbers = purchase_loto7_ticket()
prize_amount, message = check_winning_level(purchased_numbers, winning_numbers, bonus_number)
winnings += prize_amount
# 3等以上の場合のみ途中経過の表示
if prize_amount >= 730000: # 3等以上の条件
print(message)
difference = winnings - total_spent
print(f"購入したチケットの枚数: {tickets_bought}, 購入金額: {total_spent}円, 差分: {difference}円")
# 1等が当たったらループを終了
if prize_amount == 600000000:
print("おめでとうございます! 1等が当選しました!")
break
total_cost = tickets_bought * cost_per_ticket
return total_cost, winnings, tickets_bought
# シミュレーションの実行
total_cost, winnings, tickets_bought = simulate_loto7()
# 最終結果の表示
print("\nシミュレーション結果:")
print(f"購入したチケットの枚数: {tickets_bought}")
print(f"費用の合計: {total_cost}円")
print(f"獲得した賞金: {winnings}円")
print(f"利益または損失: {winnings - total_cost}円")
検証結果は動画を見てください!
この記事が気に入ったらサポートをしてみませんか?