def starforce_enforce(starforce = 0):
"""
star_pos -> 시작 스타포스
리턴값 -> 22성 성공 여부(bool)
"""
destroy_persent = { 0 : 0
, 1 : 0
, 2 : 0
, 3 : 0
, 4 : 0
, 5 : 0
, 6 : 0
, 7 : 0
, 8 : 0
, 9 : 0
, 10 : 0
, 11 : 0
, 12 : 0.6
, 13 : 1.3
, 14 : 1.4
, 15 : 2.1
, 16 : 2.1
, 17 : 2.1
, 18 : 2.8
, 19 : 2.8
, 20 : 7.0
, 21 : 7.0
}
success_persent = { 0 : 95
, 1 : 90
, 2 : 85
, 3 : 80
, 4 : 75
, 5 : 70
, 6 : 65
, 7 : 60
, 8 : 55
, 9 : 50
, 10 : 50
, 11 : 45
, 12 : 40
, 13 : 35
, 14 : 30
, 15 : 30
, 16 : 30
, 17 : 30
, 18 : 30
, 19 : 30
, 20 : 30
, 21 : 30
}
fail_persent = {0 : 5
,1 : 10
,2 : 15
,3 : 20
,4 : 25
,5 : 30
,6 : 35
,7 : 40
,8 : 45
,9 : 50
,10 : 50
,11 : 55
,12 : 59.4
,13 : 63.7
,14 : 68.6
,15 : 67.9
,16 : 67.9
,17 : 67.9
,18 : 67.2
,19 : 67.2
,20 : 63.0
,21 : 63.0
}
count = 0
while True:
random_num = random.random() * 100
# 0 ~ 100
count += 1
destroy = destroy_persent[starforce]
success = success_persent[starforce]
fail = fail_persent[starforce]
if random_num <= destroy:
return False
elif random_num <= destroy+success:
starforce += 1
elif random_num:
if starforce%5 != 0:
starforce -= 1
if starforce == 22:
return True
스타포스 강화 코드를 만들었습니다.
22성강화할때까지 도전합니다.
for test in range(10):
success = 0
for idx in range(1000):
result = starforce_enforce()
if result:
success += 1
print(f"1000번중에 {success}번 성공함")
1000번을 10번 도전해서 평균치를 구해봅니다
평균치는 45.9번 성공
22성까지 한번도 안터지고 갈 확률 약 4.6프로 정도입니다
실제로는 다를수 있습니다. 시뮬레이션은 시뮬레이션 일뿐입니다 .!
'프로그래밍' 카테고리의 다른 글
이름 궁합 테스트 만들기 (0) | 2022.06.06 |
---|---|
로또번호 랜덤 뽑기 (0) | 2022.06.02 |
export(함수 내보내기) (0) | 2022.04.02 |
class 상속 (0) | 2022.01.17 |
서브 클래싱이란 ? (0) | 2022.01.17 |
댓글