import random
# 시뮬레이션 설정
num_simulations = 586 # 각 시뮬레이션당 가챠 횟수
num_repeats = 3000 # 시뮬레이션 반복 횟수
# 가챠 확률 설정
probabilities = {
"legendary": 0.02, # 전설 캐릭터 확률
"hero": 0.20, # 영웅 캐릭터 확률
"rare": 0.40, # 희귀 캐릭터 확률
"common": 0.38 # 일반 캐릭터 확률
}
# 전설 캐릭터 리스트
legendary_characters = ["베이라", "구즈만", "사만다", "미구엘", "자비에르",
"파칼", "마이타", "콜", "디탈리오", "라비에",
"릴리윌", "글로리아", "타이던", "노노윌", "레오니드",
"이치", "네르갈", "눈갈", "이난나", "가르시아",
"매그너스", "에다", "모모", "알렉세이", "시모나",
"코코아"]
# 픽업 캐릭터 설정
pickup_character = "코코아"
# 확정 획득 카운터 설정
first_meeting_counter = 180
overall_counter = 100 # overall_counter 변수를 정의
def pull():
"""가챠 한 번을 실행하는 함수"""
global overall_counter, first_meeting_counter
first_meeting_counter -= 1 # 픽업 캐릭터 확정 카운터 감소
overall_counter -= 1 # 100뽑 확정 획득 카운터 감소
# 첫 만남 확정 획득 카운터가 0일 경우
if first_meeting_counter == 0:
first_meeting_counter = 180 # 첫 만남 카운터 초기화
overall_counter = 100 # 전체 카운터 초기화
return "pickup", "첫 만남 확정"
# 100뽑 확정 획득 카운터가 0일 경우
if overall_counter == 0:
character = random.choice(legendary_characters)
overall_counter = 100 # 전체 카운터 초기화
if character == pickup_character:
first_meeting_counter = 180 # 첫 만남 카운터 초기화
return "pickup", "100뽑 확정"
return "legendary", "100뽑 확정"
# 무작위 천장 X 캐릭터 등급 결정
random_value = random.random()
if random_value < probabilities["legendary"]: # 전설 캐릭터 획득
overall_counter = 100 # 100뽑 확정 획득 카운터 초기화
# 전설 캐릭터 중 픽업 여부 결정
if random.random() < 0.5:
first_meeting_counter = 180 # 첫 만남 카운터 초기화
return "pickup", "천장 X"
else:
return "legendary", "천장 X"
elif random_value < probabilities["legendary"] + probabilities["hero"]: # 영웅 캐릭터 획득
return "hero", "천장 X"
elif random_value < probabilities["legendary"] + probabilities["hero"] + probabilities["rare"]: # 희귀 캐릭터 획득
return "rare", "천장 X"
else: # 일반 캐릭터 획득
return "common", "천장 X"
def simulate():
"""하나의 시뮬레이션 실행 후 결과를 반환"""
global first_meeting_counter, overall_counter
first_meeting_counter = 180
overall_counter = 100 # 시뮬레이션 초기화 시 전체 카운터 초기화
pickup_count = 0
legendary_count = 0
pickup_details = {"첫 만남 확정": 0, "100뽑 확정": 0, "천장 X": 0}
legendary_details = {"100뽑 확정": 0, "천장 X": 0} # 다른 전설 캐릭터 정보 저장용
for _ in range(num_simulations):
result, reason = pull()
if result == "pickup":
pickup_count += 1
pickup_details[reason] += 1
elif result == "legendary":
legendary_count += 1
legendary_details[reason] += 1 # 다른 전설 캐릭터 획득 정보 기록
return pickup_count, legendary_count, pickup_details, legendary_details
# 반복 시뮬레이션 실행 및 평균 계산
total_pickup = 0
total_legendary = 0
pickup_details_total = {"첫 만남 확정": 0, "100뽑 확정": 0, "천장 X": 0}
legendary_details_total = {"100뽑 확정": 0, "천장 X": 0}
for _ in range(num_repeats):
pickup, legendary, pickup_details, legendary_details = simulate()
total_pickup += pickup
total_legendary += legendary
for key in pickup_details:
pickup_details_total[key] += pickup_details[key]
for key in legendary_details:
legendary_details_total[key] += legendary_details[key]
average_pickup = total_pickup / num_repeats
average_legendary = total_legendary / num_repeats
# 픽업 캐릭터 획득 이유별 평균 계산
average_pickup_first_meeting = pickup_details_total["첫 만남 확정"] / num_repeats
average_pickup_overall = pickup_details_total["100뽑 확정"] / num_repeats
average_pickup_random = pickup_details_total["천장 X"] / num_repeats
# 전설 캐릭터 획득 이유별 평균 계산
average_legendary_overall = legendary_details_total["100뽑 확정"] / num_repeats
average_legendary_random = legendary_details_total["천장 X"] / num_repeats
# 결과 출력
print(f"총 {num_repeats}회 반복 시뮬레이션 결과:")
print(f"시뮬레이션 당 {num_simulations}회 뽑기진행")
print()
print(f"픽업 캐릭터 '{pickup_character}' 평균 획득 횟수: {average_pickup:.2f}")
print(f"그 외 전설 캐릭터 평균 획득 횟수: {average_legendary:.2f}")
print()
print(f"픽업 캐릭터 '{pickup_character}' 첫 만남 확정 평균 횟수: {average_pickup_first_meeting:.2f}")
print(f"픽업 캐릭터 '{pickup_character}' 100뽑 확정 평균 횟수: {average_pickup_overall:.2f}")
print(f"픽업 캐릭터 '{pickup_character}' 천장 X 평균 횟수: {average_pickup_random:.2f}")
print()
print(f"그 외 전설 캐릭터 100뽑 확정 평균 횟수: {average_legendary_overall:.2f}")
print(f"그 외 전설 캐릭터 천장 X 평균 횟수: {average_legendary_random:.2f}")
To embed this project on your website, copy the following code and paste it into your website's HTML: