while 반복문으로 게임에서 아이템 강화하는 것 처럼 확률을 설정할 수도 있다
여기서 알아야할 건 어떻게 확률을 설정하냐이다
처음에 내가 생각한 건 randrange의 범위를 설정하고, 그걸 점점 내리면 된다 생각하였는데(그게 되는지도 모르겠고)
아이템 레벨에 따라서 확률을 점점 내릴 수 있는 공식
을 만들어야하는데 도무지 감이 안 왔다
'''
주어진 돈으로 아이템을 강화하는 코드
[남은 돈이 0이면 종료]된다
[강화할 때 마다] 돈이 줄어들면서, [[확률]]적으로 아이템의 레벨이 상승한다
마지막에 남겨진 아이템의 레벨을 확인할 수 있어야 한다.
성공확률 = 100 - ((아이템레벨 - 1) * 5)
아이템레벨 올라가면 성공확률은 낮아짐
아이템레벨 성공확률 랜덤정수(0, 101)
1 100 랜덤값 <= 성공확률
2 95
3 90
4 85
5 80
'''
성공확률 = 100 - ((아이템레벨 - 1) * 5))
100 =(최고기준(randrange의 최댓값에 따라 변동될것임)
아이템레벨 - 1 = (아이템레벨이 1이면, -1을 해줌으로서 확률이 100%가 됨)
아이템레벨이 1씩 올라갈 때 부터 확률이 95%,90%,85% 각각 5퍼센트씩 떨어지게 만드는 설정값
from random import randrange
money,itemlv = 10000,1
while money:
print(f'현재아이템레벨: {itemlv}')
print(f'현재잔액 : {money}')
print('1.강화진행')
print('2.종료')
choice = int(input('진행>>>'))
if choice == 1:
money -= 500
dice = randrange(0,101)
rank = 100 - ((itemlv -1)* 5)
print(f'{rank} : {dice} = {rank >= dice}')
if rank >= dice:
itemlv += 1
print('강화성공!!!')
print()
print()
if choice == 1 choice의 값이 1일 때(강화하겠다고 선택했을 때)
money -= 500 money = money - 500 일단 500원 먼저 차감
★dice = randrange(0,101) choice == 1 이라는 선택을 하였을 때 randrange가 활성화 되게 만들어 주어야함
rank = 100 - ((itemlv-1) * 5) 위와 똑같은 맥락으로 if choice ==1 식 안에 써야하며, 확률의 기준이 되는 식이다
if rank >= dice: rank의 값이 dice 보다 크거나 같을 때 강화가 성공된다
★(rank는 확률(100에서 시작해서 5씩 낮아짐 그말인 즉슨, 성공하는 경우의수가 5씩 줄어든다는 거임 , dice는 난수)
itemlv += 1 아이템레벨이 1 상승하고 itemlv의 값이 +1 한 값으로 바뀐다
else :
itemlv -= 1
print('강화실패!!!')
if choice == 2:
print('강화종료')
else : rank >= dice , rank의 값이 dice 보다 크거나 같지않다면 다음식을 수행한다
itemlv -= 1 iemlv의 값이 1 감소된 값으로 변수선언
if choice == 2: choice의 값에 2를 입력하였을 때 실행
여기서 -1 해주는 이유는 해당값을 초기값(100% 확률)으로 (0)으로 만들어주기위해서
생각을 너무 어렵게 하지말고 코드를 보면서 하나씩 차근차근 해석하자