길드원들은 나를 항상 게이라고 한다. 22성을 도전하지 않기 때문이다.
심지어 22성 한번 도전해본적 있는데 그 바지는 6번 더 터지고 팔아버림. 그 이후로 다시는 하지 않는다.
윈드브레이커이기 때문에 (Destiny 라이브톡 밸패 전) 17앜 21성 둘둘 윈드브레이커 템셋으로 하드루시드는 사실상 불가능에 가까웠다. 그래서 뭐 어떻게든 되겠지~ 하고 해방을 하다가 타이밍이 기가막히게 하드루시드 해방을 해야될 때 상향을 받고 자력으로 끝가지 해방을 했다.
아무튼 요즘은 21성 템으로도 충분히 해방이 가능하고 진듄더도 컨트롤만 좋으면 솔플을 충분히 할 수 있다. 30퍼 아니고 21퍼 27퍼 섞어도 쉽다.
그러므로 직작으로 22성을 가는것은 대가리가 깨진. 여기까지
다만 21성 아이템도 한계가 있다. 스펙업의 여지가 남아있지만, 21성 아이템을 22성으로 바꾸는것이 힘들다. 아마 직접 21성 아이템을 22성으로 올리면 통계적으로 3개중 1개는 12성으로 돌아갈것이기 때문에 시도하진 못하고 있다.
그래도 요즘은 스펙업을 어떻게 해야하나..고민중이라서 22성 기댓값을 한번 찾아보기로 했다. 계량경제학 통계학 공부하면서 배웠던 모델들도 한번 연습해보기로 했다.
import random
prob = [[950,0,0,50],[900,0,0,100],[850,0,0,150],[850,0,0,150],[800,0,0,200],[750,0,0,250],[700,0,0,300],[650,0,0,350],[600,0,0,400],\
[550,450,0,0],[500,500,0,0],[450,550,0,0],[400,594,6,0],[350,637,13,0],[300,686,14,0],[300,0,21,679],[300,679,21,0],[300,679,21,0],\
[300,672,28,0],[300,672,28,0],[300,0,70,630],[300,630,70,0]] #0성~21성까지 각 확률
mesoarr = [164800,328700,492500,656400,820200,984000,1147900,1311700,1475600,1639400,6639400,8397300,10422900,12731500,15338200,36514500,\
43008300,50185100,58072700,66698700,76090000,86273300] #각 수치마다 강화비용이 얼마나 드나?
def click(arr):
success,fail,destroy,remain = arr
tmp = random.randrange(0,1000) #강화 시도
if tmp >= 0 and tmp <= success: return 0 #성공하면 0리턴
if tmp > success and tmp <= success + fail: return 1 #하락이면 1리턴
if tmp > success + fail and tmp <= success + fail + destroy: return 2 #파괴면 2리턴
return 3 #(0~10성) 실패지만 하락아니면 3리턴
def dostarforce():
starforce = 0 #별 개수
meso = 0 #총 쓴 메소양
descnt = 0#터진 횟수
while starforce != 22:
res = click(prob[starforce])
meso += mesoarr[starforce]
if res == 0:#성공시 별하나 달아
starforce += 1
elif res == 1:#실패(하락)시 별하나 빼기
starforce -= 1
elif res == 2:#실패(파괴)시 별 초기화, 장비가 파괴된 횟수 증가
starforce = 0
descnt += 1
elif res == 3:#실패(유지)시 그냥 패스
pass
return [meso,descnt]
계산은 귀찮으니 데이터를 뽑기 위해 단순 시뮬레이터를 만든다. 총 사용 메소와 파괴횟수를 리턴해주는 함수이고, 이 함수를 만번 돌린것을 plot 해봤다.
원래 독립시행을 여러번 하면 베르누이분포 내지 가우시안 분포, 즉 정규분포 형태로 form이 나타나야 한다. 스타포스 같은 경우 기본적으로 한번 클릭할 때 크게 세 가지 선택지가 있는 독립 시행을 여러번 하기 때문에 정규분포 형태로 그래프가 나타나야한다고 생각을 했다.
그런데 처음 이 그래프를 본 순간 이게 왜 카이제곱분포? 그래프가 나오지? 잠깐 혼란에 빠졌었다. 나올 이유가 없는데
다시한번 카이제곱분포의 개념을 숙지하고, 당연히 아니라고 생각을 하고 가우시안분포가 찌그러진 형태라고 가정하고 이번에는 백만번 시행을 돌리고 운동을 갔다왔다. 어차피 파이썬은 싱글 스레드에서 순차적으로 동작하고, 연산 자체에 IO가 들어가는것이 없기 때문에 그냥 싱글로 돌려놓고 기다리면 된다.
resmeso = []
resdescnt = []
for i in range(1000000):
if i% 100000 == 0: print(i)
tmp = dostarforce()
resmeso.append(tmp[0])
resdescnt.append(tmp[1])
pd.DataFrame(resmeso).to_csv("resmeso.csv",mode="w")
pd.DataFrame(resdescnt).to_csv("resdescnt.csv",mode="w")
혹시 다 되고 세션이 만료되는 참사가 발생할 수도 있기 때문에 csv로 저장해놓는다.
정규분포가 찌그러진 형태라고 생각을 하면 된다. 그러니깐 정규분포를 따르지 않음. 왜?
시행이 독립시행이 안되기 때문이다!! 이 당연한걸 왜 까먹고 이상한 분포를 찾고 있었을까.. 코로나 후유증이라고 생각하자. 걸린적은 없다.
왜 안되냐면, 사건의 발생이 이전 사건에 dependent 하기 때문이다. 스타포스 강화가 실패할 경우 수치가 내려가기 때문에, 각 case 마다 총 스타포스 시행 횟수가 다를 수 있기(거의 100% 다르기) 때문에 정규분포가 안된다.
과연 확률조작 ㅈ망겜이라고 말하는 이유가 있을까?? 한번 사분위수로 잘라서 한번 봐야겠다. 상자그림을 그려보면
quarentile과 평균을 구해서 그려보자.
BoxPlot에서도 봤지만, 꼬리가 상당히 길다. 평균값과 중앙값의 차이도 심하기 때문에 괴물쥐 선생님의 56펑 아케인 신발이 아예 불가능한건 아니구나..라는 생각이 들었다.
22성까지의 메소 기댓값과 파괴 횟수 기댓값, 중앙값은 다음과 같다.
5장비 차이가 난다. 말이 5개지 이게 21년도 거공이었다고 생각해보면 ㅗㅜㅑ.. 이래서 직작으로 22성 안간다.
반대로!! 21성까지의 기댓값은 얼마일까? 위 코드를 재사용해서 윗 글을 작성하고 있는동안 100만번을 돌리고 분포를 그려봤다.
plt.hist(pddescnt,bins=[i for i in range(0,140,1)])
plt.vlines(np.mean(pddescnt),0,60000,color='red')
plt.vlines(np.median(pddescnt),0,60000,color='green')
plt.vlines(np.percentile(pddescnt,25),0,60000,color='pink')
plt.vlines(np.percentile(pddescnt,75),0,60000,color='pink')
plt.show()
보면 알겠지만 상대적으로 꼬리가 짧아졌고, Q2 Value 보다 작은 값들이 더 많아졌다. 이것이 무엇을 의미하는가?
기댓값과 표준편차가 엄~~~청 많이 줄어들었다는 방증이다. 기댓값과 중앙값을 나타내보면 다음과 같다.
여전히 Q2값과 평균값의 차이가 심하긴 하지만, 22성에 비해 고무적으로 기댓값이 많이 낮아졌다. 파괴 횟수 또한 평균과 편차가 많이 줄어든 모습이 보인다.
결론: 그래서 나는 21성 둘둘 한다!
+ 만약에 메이플 운영진이 강화 편차를 줄이는 방향으로 스타포스를 개편하려고 한다면, Q3 이후 최악의 25퍼센트 값을 싹 없애버리는 느낌으로 가도 좋을 것 같다. 다만 그렇게 된다면 중앙값이 평균값이랑 같아지는 방향으로 개편을 할 것 같은데..(파괴하락 확률을 줄이면서 강화비용을 올리거나, 타 게임처럼 노작아이템을 소모해서 파괴를 방지하는 솔루션) 어느정도 기댓값 상승은 불가피하겠지만 편차가 줄면 강화는 많이 할듯 하다.
+ 까먹고 두번 떨어지면 한번 올려주는걸 구현안했다..이런 근데 분포는 비슷하니 그냥 넘어가도록 하자..ㅎㅎ
'메끄적' 카테고리의 다른 글
일요일 샤타포스 결과 (0) | 2022.07.31 |
---|---|
LGBM이 잘 작동하지 않은 이유 (0) | 2022.07.30 |
기계학습 & Data Clearing 연습 - 메이플 데이터로 해보자!! (0) | 2022.07.30 |
<메이플> 버닝섭 vs 본섭?! 버닝섭 극한의 이득 보는법 (0) | 2022.06.29 |
(메이플스토리,몬스터라이프) - FastApi로 농장리스트 뽑아오기 (0) | 2022.03.13 |