팁게에 스타포스 기댓값을 구하는 시뮬레이터는 많은데 수학적으로 직접 계산하는 글은 없더라구요.
그래서 과연 정확한 스타포스 기댓값은 어떻게 구할까 글을 써보려고 합니다.
어려운 개념은 안나오고, 고등학교에서 확률과 통계를 이수했다면 이해하는데 어려움은 없을겁니다.



140제 장비를 10성에서 13성으로 강화하는 경우를 예시로 들어봅시다.
140제는 경매장 가격이 싸니까 1만메소로 하고, 이벤트나 스타캐치, 파방 등등은 생각하면 귀찮아지니 일단 여기서는 빼도록 할게요.
10성에서 13성으로 가는 상황을 예시로 든 이유는 스타포스 하락/유지/상승, 장비 파괴, 찬스 타임을 모두 다룰 수 있기 때문입니다.



10성에서 13성까지의 강화 확률과 비용입니다.
우리는 13성 강화에 성공하면 강화를 멈출거니까 표를 다음과 같이 바꿔도 무방합니다.



사실 이런 표에서는 장비 파괴와 찬스 타임에 대한 표현을 하기 어렵습니다.
그래서 우리는 이 표를 다음과 같은 상태도(State Diagram)로 바꿔줄 겁니다.
상태도라는 이상한 용어가 나왔는데, 상태도가 어떤건지 간단하게 이해하기 위해 10성에서 11성으로 가는 상황만 그려봅시다.



10성에서 11성으로 강화를 시도하는데 드는비용은 4448200메소로 동일하고, 별이 유지될 확률이 0.5, 상승할 확률이 0.5임을 상태도로 표현한 모습입니다.
여기서 10성, 11성을 표현한 사각형을 상태(State)라 부릅니다.
상태도가 어떤건지 대충 알았으니까 우리가 원래 계산하려고 한 10성에서 13성으로 강화하는 경우의 상태도를 그려봅시다.



12성, 13성 두개만 추가했을 뿐인데 많이 복잡해졌네요.

잘 보면 12성, 13성 2개만 추가된게 아니라, 찬스 타임을 반영하기 위해 스택 개념이 생기면서 상태가 추가로 2개가 더 생겼습니다.
12성 0스택에서 별이 하락해서 11성 1스택이 되고, 여기에서 또 별이 하락해서 10성 2스택이 되어, 다음 강화에서는 100% 확률로 11성 0스택으로 별이 상승하는 것을 볼 수 있습니다.
(10성에서는 하락 확률이 없어서 10성 1스택은 10성 0스택과 다를게 없으므로 굳이 넣진 않았습니다.)

그리고 12성에서 13성으로 강화할 때 0.006의 확률로 장비가 파괴돼 스페어를 써서 다시 12성으로 되돌리는 과정도 추가됐습니다.



이제 본격적으로 기댓값 계산에 들어가 봅시다.
현재 상태가 N성 M스택인 상황일 때, 13성까지의 강화 비용 기댓값을 이라고 합시다.

10성 0스택에서 13성으로의 강화 비용은 다음과 같습니다.

①   

두번째 항이 강화 실패하여 별이 유지된 경우, 세번째 항이 강화 성공한 경우입니다.
성공하던 실패하던 강화 비용은 들어가고, 실패하면 다시 10성 0스택부터, 성공하면 11성 0스택부터 강화해야 하죠.

 의  값만 알 수 있으면  의 값을 알 수 있으니  에 대한 방정식도 세워봅시다.

②  

여기서도 두번째 항이 강화 실패, 세번째 항이 강화 성공한 경우입니다.
강화에 실패했으니 스택이 하나 쌓여야 되지만, 앞서 말했듯이 10성 0스택과 1스택은 같기 때문에 저렇게 써도 무방합니다.
이어서  에 대한 방정식도 세워봅시다.

③  

역시 두번째 항이 강화 실패, 세번째 항이 강화 성공한 경우고, 마지막 항이 장비가 파괴됐을 경우입니다. 장비 파괴의 경우엔 스페어 값 1만메소도 들어가네요.
13성에 도달하면 더이상 강화를 안할거니까 들어가는 비용도 없겠죠?

④  

이제 슬슬 익숙해졌으니 나머지 방정식들은 한꺼번에 만들어줍시다.

⑤  

⑥  



이제 다 끝났습니다.
미지수가  로 총 6개, 앞서 번호를 붙여가며 세워왔던 방정식도 6개.
따라서 6차 연립방정식으로 이 미지수의 값들을 구할 수 있습니다.
6차 연립이라니 손으로 풀기 대단히 귀찮으니까 행렬로 만들어 계산은 컴퓨터에게 맡깁시다(이 부분은 이해가 안가도 괜찮습니다.)



이렇게 엑셀로 행렬 형태로 만들어서



https://matrixcalc.org/ko/slu.html 이 사이트에 복붙을 하고 계산버튼을 누르면!!!



오른쪽 맨 위의 숫자인 80808546이 바로 우리가 찾던  입니다.
맞게 계산해봤는지 시뮬레이터로 검증해볼까요?



메시뮬(https://ddosil.github.io/MapleSim/#starforce)에서 똑같게 세팅을 해주고 시뮬을 돌려보면!!!!



제 엄청난 운빨과 함께 우리가 계산한 80808546메소와 매우 근접하게 나왔습니다.
이렇게 계산부터 검증까지 성공~~~



지금까지의 과정울 일반화하는것으로 마무리짓겠습니다.

시작 스타포스를 , 목표 스타포스를 라 하고,
스페어의 비용을 로,
성에서의 하락, 성공, 파괴, 유지 확률을 각각 , , , 로,
성에서의 강화 시도 비용을 로,
성에서 성으로의 강화 기댓값을 로 두면,






당연하지만 이미 저 말고도 스타포스 기댓값을 수학적으로 계산하려고 하신 분이 계셨습니다.
그 분은 마코프 체인이라는 개념으로 설명을 하시던데 저는 도저히 이해를 못하겠더라고요.
그리고 결정적으로 그 설명글에는 찬스타임이 반영돼있지 않아서 제 나름대로의 고민 끝에 생각해낸 방법입니다.

사실 되게 간단한 방법인데 뭐 대단한거 되는거마냥 주저리주저리 길게도 써버렸네요...
간단하게 10성에서 13성까지의 강화만 보여드렸지만 핵심은 저게 다입니다.
저 상태도에서 1성부터 25성까지는 물론이고, 10->15, 30%할인, 10성 이하에서 +2성 이벤트, 스타캐치, 파방 등 여러 기능들을 쉽게 반영해 기댓값까지 구할 수 있습니다.

다만 상위 N%강화비용을 구하는건 꽤 까다롭습니다.
기댓값도 기댓값의 정의를 이용한 것이 아니라 편법으로 구한거여서..

아무튼 긴 글 읽어주셔서 감사합니다~~
오류 있으면 말씀해주세요!