1편에 이어서....
1. 위기협약 스펙트럼 작전 헤드헌팅에서 특정한 오퍼레이터를 얻는데 필요한 평균 가챠횟수는?

스펙트럼 작전의 위기협약 헤드헌팅에서는 6성 오퍼레이터로 쏜즈, 위디, 스즈란, 나이팅게일만 등장한다.
기본 확률은 6성 2%, 5성 8%, 4성 50%, 3성 40%
6성 오퍼레이터 4명은 모두 동등한 확률로 등장한다고 가정하면 예를 들어 나이팅게일은 0.5%확률로 등장한다.
여기서 나이팅게일을 획득하기 위해 필요한 평균적인 가챠 횟수는?
pickup_list = ['쏜즈','위디','스즈란','나이팅게일','5성','4성','3성']
weight_list = [0.005,0.005,0.005,0.005,0.08,0.50,0.40]
def try_night(pickup_list,weight_list):
total_try_num = 0
try_num = 1
bonus=False
while 1:
if bonus == False:
#10회 이내 보너스
if try_num < 10:
a = random.choices(pickup_list,weights=weight_list)
else:
a = random.choices(['쏜즈','위디','스즈란','나이팅게일','5성'],weights=[0.005,0.005,0.005,0.005,0.98])
if a == ['5성'] or a == ['쏜즈'] or a == ['스즈란'] or a == ['위디']:
bonus = True
elif a== ['나이팅게일']:
total_try_num = total_try_num + try_num
break
else:
if try_num <= 50:
a = random.choices(pickup_list,weights=weight_list)
if a == ["나이팅게일"]:
total_try_num = total_try_num + try_num
break
elif a ==["위디"] or a == ['쏜즈'] or a ==['스즈란']:
total_try_num = total_try_num + try_num
try_num = 0
else:
six_prob = 0.02*(try_num-49)
pickup_list2 = ['나이팅게일','쏜즈','스즈란','위디','기타']
a = random.choices(pickup_list2,weights=[six_prob/4,six_prob/4,six_prob/4,six_prob/4,1-six_prob])
if a == ["나이팅게일"]:
total_try_num = total_try_num + try_num
break
elif a ==["위디"] or a == ['쏜즈'] or a ==['스즈란']:
total_try_num = total_try_num + try_num
try_num = 0
try_num += 1
return total_try_num
1편에서 했던 6성을 획득하기 위해 필요한 평균 가챠횟수 코드에서 약간만 수정하면 됨
중요한 점은 나이팅게일을 획득할때까지 가챠를 시도해야하며
나이팅게일 이외에 다른 6성으로 쏜즈, 스즈란, 위디를 획득하면 확률 버프가 없어져서 처음부터 다시 가챠해야한다
이런 점을 고려하기 위해 total_try_num과 try_num을 구분
total_try_num은 나이팅게일을 획득하기 위해 누적 시도한 가챠횟수이고
try_num은 100회 이내에 6성을 획득하기까지 시도한 가챠횟수
total_man = 1000000
sum_of_try = 0
for _ in range(total_man):
try_num = try_night(pickup_list,weight_list)
sum_of_try = sum_of_try + try_num
expect = sum_of_try/total_man
print(expect)
138.146..., 138.117... 평균적으로 나이팅게일을 얻기까지 약 138회 가챠를 시도한다.
728x90
'알고리즘 > 알고리즘 일반' 카테고리의 다른 글
명일방주 픽업을 위한 평균 가챠횟수 4편(일반 헤드헌팅) (0) | 2021.11.09 |
---|---|
명일방주 픽업을 위한 평균 가챠횟수 3편(한정 헤드헌팅) (0) | 2021.11.09 |
명일방주 픽업을 위한 평균 가챠횟수 1편(6성 획득) (0) | 2021.11.09 |
deque를 사용해야할때는? (0) | 2021.11.08 |
문자열 필수 replace 활용 (0) | 2021.11.07 |