import random
# 시뮬레이션 설정 (수정하기 쉽게 변수 설정)
num_simulations = 1000 # m번 시뮬레이션 횟수
# 각 등급별 캐릭터 목록 (픽업 SSR 캐릭터는 없음)
characters = {
"SSR_Pilgrim": [
"하란", "스노우 화이트", "노아", "홍련", "이사벨",
"라푼젤", "모더니아", "도로시", "레드후드", "홍련 : 흑영", "크라운"
],
#위시리스트 가정하에 임의로 15명 배정
"SSR_General": [
"맥스웰", "슈가", "엑시아", "앨리스", "엠마", "유니", "프리바티", "프림", "율리아", "시그널",
"폴리", "미란다", "브리드", "솔린", "디젤"
],
"SR": [
"N102", "미하라", "에테르", "라피", "네온", "델타", "아니스", "벨로타", "미카"
],
"R": [
"프로덕트 08", "프로덕트 12", "프로덕트 23", "솔져 E. G.", "솔져 F. A.", "솔져 O. W.",
"iDoll 플라워", "iDoll 오션", "iDoll 썬"
]
}
# 가챠 확률 설정 (단위: %)
probabilities = {
"SSR_Pilgrim": 0.5, # 필그림 SSR: 0.5%
"SSR_General": 3.5, # 일반 SSR: 2.5%
"SR": 43.0, # SR 등급: 43%
"R": 53.0 # R 등급: 53%
}
# 가챠를 실행하는 함수
def pull_gacha():
roll = random.uniform(0, 100)
cumulative_probability = 0
# 확률에 따라 등급과 하위 카테고리를 결정
for rarity, probability in probabilities.items():
cumulative_probability += probability
if roll < cumulative_probability:
return rarity
return "R" # 기본값으로 R 등급 반환 (확률 오류 방지용)
# SSR 캐릭터 중 중복 4개 이상을 획득한 캐릭터를 추적
def simulate_gacha_until_4_or_more():
# 중복 획득을 추적할 딕셔너리
character_counts = {
"SSR_Pilgrim": {char: 0 for char in characters["SSR_Pilgrim"]},
"SSR_General": {char: 0 for char in characters["SSR_General"]}
}
total_pulls = 0
num_over_4_count = 0 # 중복 4개 이상을 가진 캐릭터의 수
# 중복 4개 이상을 가진 캐릭터가 5명 이상 될 때까지 반복
while num_over_4_count < 5:
total_pulls += 1
rarity = pull_gacha()
if rarity in ["SSR_Pilgrim", "SSR_General"]:
# 캐릭터 이름을 랜덤하게 선택
if rarity == "SSR_Pilgrim":
character = random.choice(characters["SSR_Pilgrim"])
else:
character = random.choice(characters["SSR_General"])
# 해당 캐릭터 획득 횟수 증가
character_counts[rarity][character] += 1
# 중복 획득 횟수 4개 이상인 캐릭터가 5명 이상 될 경우 종료 조건
num_over_4_count = sum(1 for count in character_counts[rarity].values() if count >= 4)
return total_pulls # 중복 4개 이상을 가진 캐릭터가 5명 이상될 때까지 뽑은 횟수
# 여러 번의 시뮬레이션을 돌려 평균값을 계산하는 함수
def run_simulations_for_duplicates(num_simulations):
total_pulls_needed = 0
for _ in range(num_simulations):
pulls_needed = simulate_gacha_until_4_or_more()
total_pulls_needed += pulls_needed
# 평균 계산
avg_pulls_needed = total_pulls_needed / num_simulations
return avg_pulls_needed
# 시뮬레이션 실행
average_pulls_needed = run_simulations_for_duplicates(num_simulations)
# 결과 출력
print(f"4개 이상 중복된 SSR 캐릭터가 5명이 될 때까지 평균 뽑기 횟수:")
print(f"필요한 뽑기 횟수: {average_pulls_needed:.1f}번")
print(f"필요한 뽑기 재화: {average_pulls_needed*300:,.0f}쥬얼")
print(f"필요한 뽑기 재화: {average_pulls_needed*300*20:,.0f}원")
To embed this project on your website, copy the following code and paste it into your website's HTML: