#PYTHON
import random
# 확률 테이블 (아이템, 실타래 개수, 확률)
prob_table = [
("엔카로샤 실타래 2000개", 2000, 0.001),
("BD9 N 의상 세트 상자", 2000, 0.001),
("BD9 N (남) 의상 상자", 0, 0.0075),
("BD9 N (여) 의상 상자", 2000, 0.0075),
("[남] BD9 N 외형 장식 상자", 0, 0.02),
("[여] BD9 N 외형 장식 상자", 0, 0.02),
("엔카로샤 실타래 1000개", 1000, 0.003),
("엔카로샤 실타래 500개", 500, 0.005),
("엔카로샤 실타래 100개", 100, 0.03),
("엔카로샤 실타래 50개", 50, 0.1),
("엔카로샤 실타래 30개", 30, 0.2),
("엔카로샤 실타래 15개", 15, 0.3),
("엔카로샤 실타래 10개", 10, 0.305),
]
def simulate_draw(n, m):
successful_trials = 0 # 여성 의상을 얻은 시뮬레이션 횟수
for _ in range(m):
silk_thread = 0 # 실타래 개수
has_women_outfit = False # 여성 의상을 얻었는지 여부
for _ in range(n):
rand = random.random() # 0~1 사이 난수 생성
cumulative_prob = 0
for item, thread, prob in prob_table:
cumulative_prob += prob
if rand <= cumulative_prob:
silk_thread += thread
if item == "BD9 N (여) 의상 상자":
has_women_outfit = True
break # 한 번 뽑았으면 종료
# 실타래를 2000개 이상 모았는지 체크
if has_women_outfit or silk_thread >= 1450:
successful_trials += 1
return successful_trials / m # 여성 의상을 얻을 확률
# 예제 실행: 50회 뽑기를 10만번 시뮬레이션
n = 50 # 50회 뽑기
m = 100000 # 10만번 실험
probability = simulate_draw(n, m)
print(f"{n}회 뽑기 시 여성 의상을 얻을 확률: {probability * 100:.2f}%")
가성비 패키지 6.6만 원으로 50회 뽑기 + 실타래 2000개로 교환해서 원하는 의상(여 혹은 남) 하나를 얻을 확률은 62.83%네요.
*확률 테이블을 (여) 의상 기준으로 했어요.
*의상 남, 여 상관이 없다면 확률이 이보다 올라갑니다.