https://www.online-python.com/
Online Python - IDE, Editor, Compiler, InterpreterOnline Python - IDE, Editor, Compiler, Interpreterwww.online-python.com위 사이트에 들어가서 아래 코드 입력 후 실행
num = 1000000 # 갈아버릴 아이템 수 입력
p0 = 0.248 #확률 입력 (전설 품3 4개: 0.248, 일반 품3 4개: 0.1)
p1 = 1-p0
p2 = p0*0.9
p3 = p0*0.09
p4 = p0*0.009
p5_4 = p0*0.001
p5_3 = p0*0.01
p5_2 = p0*0.1
def rec_calc(count, quality):
if count < 0.01:
return 0
count = count / 4
match (quality):
case 1:
return rec_calc(count*p1, 1)+rec_calc(count*p2,2)+rec_calc(count*p3,3)+rec_calc(count*p4,4)+rec_calc(count*p5_4,5)
case 2:
return rec_calc(count*p1, 2)+rec_calc(count*p2, 3)+rec_calc(count*p3, 4)+rec_calc(count*p5_3, 5)
case 3:
return rec_calc(count*p1,3)+rec_calc(count*p2,4)+rec_calc(count*p5_2, 5)
case 4:
return rec_calc(count*p1,4)+rec_calc(count*p0, 5)
case 5:
return count * 4
return
res = rec_calc(num,1 )
print ("전설개수:", res)
print ("전설1개를 위해 갈아야 할 아이템 수:", num/res )
https://www.online-python.com/Az1tqxUwGj
결과적으로는 비슷하긴한데 지금 글에 써있는 코드는 재귀적으로 하고 있고 count가 0.01보다 낮아지면 재귀끊는 탓에 오차가 좀 있다고 봐야할듯
@이파
선생님 이해가 안가요 ㅋㅋ
1. b[i+1]=a[i]*p/(3+p);
여기서 왜 3+p 로 나눠주는지 모르겠음 ㅠ.ㅠ
2. for j in range(i+1,5):
배열 인덱스가 4에서 끝나는데 범위가 5? 어케 돌아가노?
그리고... 확률이 1스텝씩 올라갈 때마다 1/10으로 주는 거 맞나? 이거 마지막에는 1/10이 아니라 1/9로 줄여야 되는데 해당 예외 처리를 어떻게 했는지 모르겠다.
https://wiki.factorio.com/Quality
<- 여기 중간에 표 보면 Q*9/10, Q*9/100, Q*9/1000, 이렇게 되다가 마지막에 Q*1/1000 이렇게 9가 1로 바뀌는데 이거 반영이 어디서 된건지 모르겠엉.
@안전조아 처음에 품질1의 아이템이 1개 있다고 치고, 이걸 재활용기에 넣으면 1/4개의 아이템이 나오겠지? 그런데 그중에 p%아이템은 품질2보다 큰아이템이 나올거고 (1-p)%의 아이템은 그대로 품질1이 나올거임 즉, 1(품질1) -> 0.25(1-p)p (품질1) + 0.25p (품질2이상) 인건데, 이건 사실 (1-0.25(1-p)) (품질1) -> 0.25 (품질2이상) 으로 나타낼수 있고 1 (품질1) -> 0.25p/(1-0.25(1-p)) =p/(3+p) (품질2이상) 으로 나타낼 수 있음 1개의 아이템은 결국 p/(3+p) 개의 품질2이상 아이템이 되어버리는거지
@이파 상세한 설명 감사합니다 선생님 흑흑. 팩갤 진짜 개쩔어
p/(3+p) 개의 품질2이상 아이템을 얻긴했는데 이제 여기서 품질2, 품질3, 품질4, 품질5 아이템의 갯수를 얻어야하는데 이제 여기부터는 p가 관여한게 아니라 말한대로 10%씩 등급업을 할거임 만약 품질2이상의 템이 1개가 나왔다면 이중에 10%는 품질3이상이 나올거고, 그중에 또 10%는 품질4이상이 나올거고, 그중에 또 10%는 품질5가 나오게됨 즉 품질2는 0.9개, 품질3은 0.09개, 품질4는 0.009개, 품질5는0.001개가 나옴 속에 있는 for루프는 이연산을 품질j부터 품질5까지 계산해주는 루프임
@안전조아 승급할때마다 또 10%의 추가찬스로 연속 승급을 할 수 있는건데 이미 전설까지 도달한템은 더이상 승급할 수 없으니깐 그냥 루프를 품질4->품질5 계산하는것까지만 돌면 자연스럽게 반영이 되는거고
@이파 상세한 설명 정말 감사합니다 이해에 많은 도움이 되었습니다
그 위키보면 Legendary quality (research) 첫줄이 1렙 1-Q 2렙 Q*9/103렙 Q*9/1004렙 Q*9/10005렙 Q*1/1000 이렇게 써있는데 이걸 보니까 혼선이 있는거고 이걸 다르게 표기하면2렙미만 1-Q 2렙이상 Q3렙이상 Q*1/104렙이상 Q*1/1005렙이상 Q*1/1000 이렇게 나타낼수 있는데 이렇게 보면 마지막에 1/9같은 표기가 없으니까 혼선이 없을거라고 생각해