바쁘신 분들을 위한 간단요약:
1. 첨부 프로그램 사용법은 맨아래 사용법 참조
2. 갓격수가 상대 필드에 홀로 있는 3/2 하수인을 킬딸 확률은 약 25%
3. 증뎀 1 버프받은 신화로 상대 3피 하수인을 킬딸 확률은 약 30% (아래에 적지 않음)
4. 이 외에도 잡다한 비슷한 매커니즘으로 인한 킬확률 계산 가능

하스스톤엔 1데미지를 랜덤으로 마구 흩뿌리는 매커니즘이 많죠. 그 계열의 선두주자로 크툰, 폭격수 형제, 신비한 화살, 응징의 격노, 불꽃꼬리 전사등이 있는데요, 이놈들의 공통적인 문제는 도대체 내가 타겟 캐릭터를 죽일 수 있는지가 불투명하단거죠. 그나마 크툰은 공격력을 오바시켜서 확정적 킬각을 낼 순 있지만 많은 경우 도박이 필요할 때가 있습니다.

하지만 크툰이 아니더라도 분명히 (주로 투기장에서) 적 필드에 3/2 하수인 하나 있는 상황에서 폭격수 던지기를 고심해보신 적이나, 마찬가지로 2체 하수인이 하나 깔린 상황에서 신비한 화살로 사기칠 생각을 하신적들 많으실겁니다. 물론 이 중 몇몇은 손으로 계산이 가능할만큼 쉬운 경우도 있지만 한발한발 들어가고 데미지 계산이 이루어지는 하스스톤의 시스템상 하수인 수가 둘, 셋만 넘어도 계산이 불가능한 지경에 이릅니다.

따라서 이러한 계산을 해주기 위해 프로그램을 만들었고, 이 프로그램은 2천번 시뮬레이션을 통해 특정 캐릭터가 죽을 확률, 그리고 평균적으로 남는 체력을 계산합니다.

먼저 성능? 테스트의 일환으로 제가 유튜브에서 발췌한 경우 몇개를 확인해보겠습니다. 먼저 쥬팬더님의 영상인데요,



자, 이 경우 상대 크툰에 의해서 내 필드는 어떻게 될까요? (물론 상황을 찾다보니 상대가 크툰을 쓰는 상황을 찾았지만 만약 프로그램을 여러분이 쓰신다면 여러분이 상대의 입장에서 미리 계산하고 쏘시겠죠?)

일단 시뮬레이션의 결과는 다음과 같습니다:



결과를 해석하는 방법은 다음과 같습니다:

이길확률 (본체가 털릴확률) = 0%, 그리고 평균적으로 25.79의 체력이 남습니다.
1번 하수인 (이샤라즈) 죽을확률 20%, 남는 체력 평균 2.03
2번 하수인 (리노) 죽을확률 22.9%, 남는 체력 평균 1.95
3번 하수인 (어둠골) 죽을확률 38.9%, 남는 체력 평균 1.23

그럼 결과는 어떨까요?



나쁘지 않군요! 혹시 모르니 하나만 더 확인합시다. 다음 스크린샷은 트롤든 영상에서 발췌했습니다:



이때 상대 하수인과 명치의 상태는 어떨까요? 시뮬레이션의 결과는 다음과 같습니다:



해석해 보자면:

명치가 털릴확률 0%, 평균 체력 10.77
1번 하수인 (비룡) 털릴확률 16.7%, 평균 체력 1.86
2번 하수인 (호박술사) 털릴확률 0%, 평균 체력 7.84
3번 하수인 (아비아나) 털릴확률 4.9%, 평균 체력 2.86
4번 하수인 (브란) 털릴확률 17%, 평균 체력 1.90
5번 하수인 (크툰) 털릴확률 0%, 평균 체력 18.78

예리하신 분이라면 눈치채셨겠지만 브란과 비룡은 이론상으론 죽을 확률이 같아야 합니다. 하지만 이 결과는 비록 2천번 (참고로 저는 IDE환경에서 디버깅 모드로 돌리느라 느려서 그냥 1천번만 했습니다. 첨부한 프로그램은 2천번 시뮬이므로 위의 결과보단 나을수도 있습니다.)의 시뮬레이션이지만 어디까지나 시뮬레이션이므로 근소한 차이는 있겠죠.

자 그럼 실제 결과입니다:



쥬팬더님의 케이스보단 결과가 살짝 떨어지지만 그래도 나름 괜찮은 결과군요!

크툰 이외의 활용법:

눈치 빠르신 분들은 아셨겠지만 이 프로그램은 굳이 크툰이 아니더라도 데미지를 마구 뿌리는 하수인 혹은 주문에 대해 다 적용 가능합니다.

예를들어 폭격수를 보죠. 투기장에서 잘 일어나는 상황 중 하나가 상대 필드에 3/2 하수인 하나 있고 내가 폭격수 내면서 기도하는 상황인데요, 그 상황에서 폭격수가 갓격수가 될 확률은 몇일까요? 이 프로그램은 비록 상대 명치와 최대 하수인 7마리를 상정해서 만들었지만, 폭격수의 경우 자기 하수인과 내 명치도 상대 하수인으로 간주하고 계산할 수 있기에 계산이 가능합니다. 해볼까요?



여기서 30은 나와 상대의 체력이고 사실 3만 넘으면 무슨 숫자든 상관 없습니다. 여기서 26.5는 상대의 2체력 하수인을 킬딸 확률이고, 그건 대략 26.5%라고 하네요. 게다가 평균적으로 1체가 남습니다. 진짜 그럴까요? 이건 간단한 경우라 계산이 가능한데,  가능한 경우들은 다음과 같죠:

1. 하수인 하수인 니명치 (1/3*1/3*1/2)
2. 하수인 하수인 내명치 (1/3*1/3*1/2)
3. 하수인 니명치 하수인 (1/3*1/3*1/3)
4. 하수인 내명치 하수인 (1/3*1/3*1/3)
5. 니명치 하수인 하수인 (1/3*1/3*1/3)
6. 내명치 하수인 하수인 (1/3*1/3*1/3)

위의 확률들을 다 더해주면 7/27, 즉 25.9%가 나옵니다. 0.6%의 오차니 상당히 괜찮죠! 아마 만약 이 프로그램을 사용하신다면 크툰보다 폭격수 내시기 전에 각보시는게 훨씬 더 유용한 활용법일 수 있겠네요.

비슷한 경우로 예전에 쥬팬더님 방송을 보면서 크툰 공격력 16, 상대 필드에 풀피라그 하나, 상대 체력은 16 이상인 경우가 있었는데요, 이때 크툰을 내서 라그를 잡을 확률이 몇일까요? 전 사실 트위치 챗창에서 고민도 없이 50%라고 하시는 분들이 있어서 살짝 당황했는데요; 어떻게 계산하신지들은 모르지만 절반절반 해서 50%라고 찍은건 아니셨길 빕니다...

시뮬레이션을 통해 구한 확률은 (이건 제가 돌리고 결과만 알려드리겠습니다. 미심쩍으시면 다운받아서 스스로 돌려보세요~) 60.8%, 평균 체력은 0.78이 나오더군요. 제 기억이 맞다면 그 라그는 1인가 2체 남기고 살았습니다.

이게 믿어도 좋은 수치인지 계산해볼까요? 다행스럽게 이 경우는 쉬운 경우에 속해서 계산이 쉽습니다. 라그가 살려면 9발 이상에 본체에 박혀야하고, 16발중 n발 (n>8)이 본체에 박힐 확률은 C(16,n)/2^16입니다. 그런데 9발, 10발, ... 16발까지 가능하므로 n을 9부터 16까지 바꾸면서 다 더하면 그 확률은 26333/65536이고, 이게 정확히 라그가 [안]죽을 확률이므로 이걸 1에서 빼면 39203/65536, 즉 59.8%가 나옵니다. 1% 오차네요!

저는 나중에 추가하더라도 지금은 더 안적겠지만 여러분들이 자주 마주치시는 상황에 대해 (신비한 화살, 퍄퍄, 응격 등등) 계산해보시는 재미도 쏠쏠하실겁니다 ㅋ

사용법

자 이제 사용법을 알려드릴게요. 먼저 다운받으신 폴더를 압축푸시고 안에 가보시면 CThun.exe (확장자 exe는 안보일 수 있습니다) 파일이 있습니다. 이 파일을 폴더에서 꺼내시거나 폴더 내용을 지우시면 안됩니다. 그러면 프로그램이 바로 꺼져버리더라고요.

실행하시면 윈도우라면 명령 프롬프트 (까만화면에 글자들) 화면이 열리면서 다음과 같은 메시지가 출력됩니다:

Enter C'Thun's damage: 

여기서 그냥 크툰의 데미지나 아니면 흩뿌려지는 데미지를 입력하세요. 예를들어 16공 크툰이면 16, 브란이 있는 경우면 32, 신비한 화살은 3, 폭격수는 3이나 6을 입력하시면 됩니다. 입력하시고 엔터를 치시면 다음줄로 넘어가고 이런 메시지가 나옵니다:

Enter the health of opponent:

여기선 상대 본체의 체력을 입력하시면 됩니다. 입력하시고 엔터 치시면 이제 하수인 체력을 기입할 차례인데요, 일곱 하수인을 상정하고 짰으므로 다음과 같이 일곱번 질문합니다.

Enter the health of minion X:

여기서 X는 숫자고요, 1부터 7까지 물어봅니다. 입력하시는 순서는 상관없지만 어떤 순서로 입력하셨는지 기억해 두셔야 나중에 결과를 해석할 수 있으시겠죠? 저는 그래서 왼쪽부터 차례대로 넣습니다. 여기서 만약 하수인이 둘뿐이라 3,4,5,6,7 하수인에 입력할 체력이 없다면 그냥 0을 입력하시면 됩니다. 만약 폭격수처럼 아군 하수인도 안가리고 타겟팅 되는경우라면 아군 하수인과 내 명치의 체력도 (하수인 자리에 입력하시면 됩니다) 기입하시면 됩니다.

다 입력하시고 엔터를 치시면 컴퓨터가 순식간에 계산을 끝내고 다음의 메시지를 출력할겁니다: (전 크툰 공격력 16, 상대 명치체력 10, 하수인 3마리가 각각 4/3/2 피인 경우로 입력했습니다.)



 Probability of winning 위의 내용물은 제가 입력한 내용입니다. 결과를 해석하는법은 다음과 같죠:

Probability of winning, 즉 상대의 명치가 터질 확률입니다. 여기선 1.2%네요. 괄호속의  (rmng. 2.79)는 평균적으로 남는 체력이 2.79란 뜻입니다. (사실상 못죽이고 체력이 2~3정도 남는단 소리죠)

Probability of min.1 death는 내가 첫번째로 입력한 하수인이 죽을 확률입니다. 전 4체 하수인을 처음 입력했고, 그녀석이 뒈질 확률은 89.4%에 남는 체력이 평균 0.14라네요. (즉, 거의 뒈진단 소리죠)

Probability of min.2 death는 두번째 하수인에 대한 결과입니다. 해석방법은 첫번째 하수인과 같습니다.

입력시 하수인이 없어서 그 자리에 0을 입력하신 경우 해석에선 irrelevant, 즉 무관한 결과로 출력되니 신경쓰시지 않으시면 됩니다.

이렇게 하시고 나면 이제 다시 새로운 세션을 위해 크툰 공격력을 묻습니다. 그러니 그냥 켜두시고 쓰시면 됩니다.

그리고 이 프로그램은 하스와 연동하는 프로그램이 아니므로 부정 유틸리티 걱정은 절대 하지 않으셔도 됩니다.

애당초 제 호기심 충족을 위해 만든 프로그램이라 얼마나 유용하고 많은분들이 쓰실지 모르지만 그래도 도움이 되었으면 좋겠네요.

아, 참고로 곱게 안죽고 새끼를 까는 임두나 용의 알, 파창코, 손놈 같은 하수인이 있으면 사용하실 수 없습니다.