import random

# 변수 설정
n_tickets = 1000  # 구매할 복권 장수
lottery_price = 30000  # 복권 한 장의 가격
num_simulations = 1000  # 시뮬레이션 반복 횟수

# 등수별 확률 및 상금 데이터
lottery_data = [
    {"rank": 1, "probability": 0.000448, "prize": 20000000},
    {"rank": 2, "probability": 0.007921, "prize": 500000},
    {"rank": 3, "probability": 0.054456, "prize": 150000},
    {"rank": 4, "probability": 0.186706, "prize": 50000},
    {"rank": 5, "probability": 0.337344, "prize": 20000},
    {"rank": 6, "probability": 0.305077, "prize": 10000},
    {"rank": 7, "probability": 0.108048, "prize": 0},
]

# 당첨 확률을 누적 확률로 변환
cumulative_probabilities = []
current_probability = 0
for item in lottery_data:
    current_probability += item["probability"]
    cumulative_probabilities.append(current_probability)

# 복권 1장의 결과를 시뮬레이션
def simulate_single_ticket():
    rnd = random.random()  # 0~1 사이의 난수 생성
    for i, cum_prob in enumerate(cumulative_probabilities):
        if rnd <= cum_prob:
            return lottery_data[i]["prize"]
    return 0  # 기본 값

# n장의 복권 결과를 시뮬레이션
def simulate_n_tickets(num_tickets):
    total_prize = sum(simulate_single_ticket() for _ in range(num_tickets))
    return total_prize

# 시뮬레이션 실행
def calculate_total_profit_probability(num_tickets, ticket_price, simulations):
    total_cost = num_tickets * ticket_price
    profit_count = 0

    for _ in range(simulations):
        total_prize = simulate_n_tickets(num_tickets)
        if total_prize > total_cost:
            profit_count += 1

    return (profit_count / simulations) * 100  # 퍼센트로 변환

# 계산
profit_probability = calculate_total_profit_probability(n_tickets, lottery_price, num_simulations)

# 결과 출력
print(f"{n_tickets}장을 구매했을 때, 전체적으로 이득을 볼 확률은 {profit_probability:.4f}%입니다.")

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: