|
2020-11-25 09:11
조회: 7,687
추천: 47
dpm 이야기 (2) - 맥뎀 계산선요약
1. 1~100 * 1~100 을 했을때 2. 5000~6000이 나올 확률이 9000~10000이 나올 확률보다 높다 3. 스공 * 크뎀도 마찬가지다 * 크뎀은 딜 계산시 (20+크뎀)% ~ (50%+크뎀)% 범위를 가집니다. 간단한 예시 주사위 두개를 굴려 나온 눈의 곱이 30 이상이 될 확률을 계산해봅시다. 후보가 1~36이고 당첨이 30~36이니 7/36이 정답일까요? ![]() 3/36이 정답입니다. 이처럼 두 랜덤의 곱셈은 평균에 가까운 값이 더 많이 등장합니다. dpm 제작시 맥뎀을 고려한 평균 한줄뎀을 정확하게 계산하기 위해서는 이 문제를 풀 수 있어야 합니다. ㄴㄷㅆ 설명 여기부터는 읽지 않아도 일상생활에 아무런 영향이 없습니다. 문제를 주사위가 아닌 실수 범위로 확장하면 다음과 같이 표현됩니다. ![]() 너무 대충 그렸나 싶지만... x - 기본딜, y - 크뎀, M - 맥뎀 이라고 생각하시면 됩니다. (기본딜 = 스공*퍼뎀*최종뎀*기타등등... = 크리티컬이 아닐 시 데미지 구간) 붉은 면적으로 표시된 부분이 맥뎀에 막히는 영역이라고 할 수 있습니다. 기본딜 범위를 [x1, x2], 크뎀 범위를 [y1, y2]라고 하고, 직사각형 영역 S = [x1, x2] * [y1, y2]으로 정의한 다음 ![]() 해당 영역에 대해 중적분을 해주면 ![]() 이렇게 생긴 도형과 xy평면 사이의 부피가 구해집니다. min() 함수로 인해 특정 높이부터 xy와 평행한 평면이 되는 것이 보입니다. 구하고자 하는 값은 1차원 값인 평균 딜량이므로 부피를 바닥 면적인 (x2-x1)(y2-y1)으로 나누고 식을 정리하면 됩니다. 막상 해보면 min()때문에 x1y1, x1y2, x2y1, x2y2, M의 대소 관계에 따라 구간을 나눠서 각각 구해야 하고, 일부 구간을 제외하면 귀찮은 계산이 더 들어가므로... 전체 풀이는 패스. ![]() 위 내용을 종합해서 파이썬 코드로 표현하면 이렇게 됩니다. dpm 모듈에서 사용되고 있는 코드입니다. https://github.com/oleneyl/maplestory_dpm_calc/blob/e7d05a772e5e4935c3c27c56864b5c1f2a380137/dpmModule/kernel/core.py#L140 (Author: @oleneyl) --- 이야기들은 아무때나 내키는 주제로 작성합니다. 개발하면서 쌓인 자료들을 잊어버리기 전에 기록, 공유하는 목적입니다. dpm 등 메이플 관련 자료를 만드는 분들께 조금이라도 도움이 되었으면 합니다. 감사합니다.
EXP
11,893
(61%)
/ 12,201
|
메이플스토리 인벤 자유게시판 (구) 게시판
인벤 전광판
메이플스토리 인벤에 오신 것을 환영합니다~★
[헨리테] 귤 맛있다
[에리스] 일주일 뒤면 성인인데 어카지....
[젓가락왕자] 나는 쌀다팜~ 난 이미 쌀다팜ㅋㅋ
[비숍에미치다] 바이퍼의 반댓말은 하이퍼
[아쿠아리움] 염소가 웃으면 goooooat
[스피넬12] 스샷 잘찍으면 나이스샷
[젓가락왕자] 나는 쌀다팜~ 난 이미 쌀다팜ㅋㅋ
[Shushuoo] KANG AGAIN





Narnke