from math import comb
import random
# 설정 변수
total_numbers = 100 # 총 번호 개수
winning_numbers = 6 # 당첨 번호 개수
chosen_numbers = 24 # 사용자가 고르는 번호 개수
lottery_price = 30000 # 복권 가격 (1장당)
n_lotteries = 100 # 구매할 복권 수
# 당첨금 설정 (등수별 상금)
prize_money = {
6: 200_000_000, # 1등
5: 10_000_000, # 2등
4: 500_000, # 3등
3: 50_000, # 4등
2: 20_000, # 5등
1: 10_000, # 6등
0: 0 # 7등
}
# 전체 경우의 수 계산
total_combinations = comb(total_numbers, chosen_numbers)
# 등수별 확률 계산
probabilities = {}
for k in range(winning_numbers + 1): # 0개 맞춤부터 6개 맞춤까지
if k <= chosen_numbers: # 고른 번호 개수 이상 맞출 수 없음
matching_combinations = comb(winning_numbers, k) # 당첨 번호 중 k개 선택
non_matching_combinations = comb(total_numbers - winning_numbers, chosen_numbers - k) # 나머지 선택
probability = (matching_combinations * non_matching_combinations) / total_combinations
probabilities[k] = probability # 확률 저장
# 손익 계산을 위한 복권 구매 후 실제 당첨금을 계산
total_spent = lottery_price * n_lotteries # 총 지출
total_winnings = 0 # 총 당첨금
# 각 등수별 당첨 횟수 계산 (n_lotteries번 복권을 뽑았을 때)
# 확률에 따라 복권이 당첨될 때마다 등수를 계산
prize_counts = {k: 0 for k in prize_money}
for _ in range(n_lotteries):
# 0~6개 맞춘 당첨 결과를 시뮬레이션
drawn_numbers = random.sample(range(1, total_numbers + 1), chosen_numbers) # 사용자가 고른 번호
winning_numbers_set = random.sample(range(1, total_numbers + 1), winning_numbers) # 당첨 번호
# 맞춘 번호 개수 계산
matched_numbers = len(set(drawn_numbers) & set(winning_numbers_set))
# 해당 등수 당첨
prize_counts[matched_numbers] += 1
total_winnings += prize_money[matched_numbers] # 해당 등수의 상금을 더함
# 손익 계산
profit_or_loss = total_winnings - total_spent # 손익 계산
# 결과 출력
print("복권 시뮬레이션 결과")
print(f"복권 가격: {lottery_price}원")
print(f"구매한 복권 수: {n_lotteries}장")
print(f"총 지출: {total_spent:,}원")
print(f"실제 당첨금: {total_winnings:,.2f}원")
print(f"손익: {profit_or_loss:,.2f}원")
print("\n각 등수별 당첨 횟수:")
for k in sorted(prize_counts.keys(), reverse=True):
print(f"{k}개 맞춘 당첨 횟수: {prize_counts[k]}회")
To embed this project on your website, copy the following code and paste it into your website's HTML: