간만에 읽을거리 하나 마련하기 위해 여태껏 짬짬히 해왔던 뻘짓일을 공개해볼까 합니다.
저번처럼 약팔이 글일수도 있기에 반쯤은 재미로 봐주세요 ㅎㅎ

우선 아이디어 제공에 도움을 주신 술이비처럼내 님께 감사를 표합니다.


결론부터 말하자면 저는 블리자드 와우 직원이 아니기 때문에

!! 모른다 !!

가 답이겠으나, 합리적 의심이 드는 관계로 아래와 같은 장황한 글을 쓰게되었습니다. (_ _)
수학과 관련된 내용이 있기 때문에 지루하실 수 있어서 제일 아래에 요약을 해두었으므로
참고 해주시면 되겠습니다.

이를 안다고 해서 본인의 딜사이클이 1%라도 더 늘어나거나 하는 차이는 없기 때문에
무조건 알아야한다는 아니지만,
적어도 번뜩임 운빨 기도메타 노답이네라고 단정 짓는 것은 프로그래밍 상 매우매우 어려운 문제이므로
그 이해를 돕고자 하는 것이니 그 의미만 가져가 주시면 되겠습니다 ㅎㅎ


여하간 내용에 대한 세부적인 내용은 인벤 HTML 특성상 각주처리가 꽤 어려워서
글 하단에 참고문헌과 부록 등을 내용각주 이렇게 표기하도록 하겠습니다.









의사 난수라는 것이 있습니다.
영어로는 Pseudo Random Number라고 하고
워크래프트 내에서 일정 확률로 처리하는 Special_Process(이하 spec_proc)의 분포도를 보여주는 것을
Pseudo Random Distribution(이하 PRD)이라 하죠.
1

Pseudo는 슈도라고 읽고 가짜, 허위라는 뜻을 가지고 있습니다.
깨알이긴 하지만 학식 먹던 시절에 의학용어 배우면서 기억 한 구석에 간신히 있었던 단어네요.


꺼라위키 설명으로는 
난수는 아니나 난수로 취급이 가능한 수열을 지칭한다.
보통 난수를 만들 수 없는 컴퓨터 등에서 난수를 사용하기 위해서 만들어진 수열.
충분한 숫자를 가지고 적당한 분포를 가진 수열 또는 수열을 생성 가능한 식을 통해 만들어지면
의사 난수로 사용 가능하다.

컴퓨터에서는 특수한 하드웨어 없이 완전한 난수를 생성할 방법이 없기 때문에
보통 의사 난수를 사용한다.
라고 되어있습니다.

확률이란 것을 온전히 설정할 수 없는 컴퓨터 프로그램에서는
난수의 형태로 확률과 비슷하게 설정을 해오고 있다.

극단적인 예를 간단하게 들어볼까요 ?
우리는 30%라는 드랍템을 얻기 위해 컴퓨터가 /주사위 100을 합니다.
/주사위 100의 결과값은 1부터 100까지 동등하게 나온다고 가정을 하고
1~30의 값이 나오면 당신은 템을 드시는 것이고
31~100의 값이 나오면 아쉽지만 령 35만 덩그러니 나옵니다.

물론 /주사위 조차도 당연하겠지만 의사 난수로 사용하겠지만 여하간 그렇다는 의미입니다.
하지만 위의 경우는 1부터 100까지 모두 1%로 나올 확률이 동등하기에

재수가 없으면 100판을 돌아도 각각 70%의 독립시행 확률로 모두 못먹을 수도 있습니다.
반대로 운이 엄청 좋으면 100판을 돌고 각각 30%의 독립시행으로 모두 템을 드실 수 있죠.


그렇다면 여기서,
신화 월드 퍼스트 킬을 달리려는 레이드나 고단쐐기 첫 클리어와 같은 그런 중요한 순간에
혹은 리그 오브 레전드에서 운명을 가르는 한타 싸움에

치명타의 수치가 30%임에도 불구하고
너무나 어이없이 독립시행 치명타가 5번이고, 10번이고, 50번이고, 100번이고 모조리 터져준다면
플레이하는 게이머 입장에서는 얼마나 당황스러울까요 ?  3  4

그러나 만약 확률이란것이 정말로 공정하게만 이루어져있다면 있을 수 있는 일이긴 합니다.



잡설이 길었습니다만 요약하자면 이렇습니다.

게임의 극단적인 편향을 방지하기 위해 좋든 싫든
개발자 쪽에서는 확률에 대한 특수한 조치를 취했을 것이다.

그것이 위에서 설명해드렸던 PRD가 나오게 된 원인입니다.



단순한 랜덤 분포도는 다음과 같습니다.



4충전물 기준 번뜩임이 뜰 확률은 27.5%입니다.

따라서 첫번째 4충비작에 뜰 확률은 27.5%
두번째 4충비작에 뜰 확률은 (1-0.275)*(0.275)*100[%] = 약 20% 정도입니다.
마찬가지로 세번째 4충비작에 번뜩임이 뜰 확률은 (1-0.275)*(1-0.275)*(0.275)*100[%] = 약 14%

단순한 산술의 결과물이라면 이러한 분포가 나올 것이고
저 수치를 연결한 그래프의 기댓값은 27.5%가 가졌듯 3과 4사이에서 형성이 될 것입니다.



평균값은 대략 저 근처라는 소리죠.




다음은 제가 실제로 허수아비를 치면서 얻은 번뜩임의 분포표입니다.



왼쪽은 백분위를 곱하기 전의 확률값이고, 아래는 몇 4충 비작만에 번뜩임이 떴는지의 수입니다.
즉, 1을 보면 첫 4충전 비전작렬을 때리자마자 약 26% 정도의 확률로 번뜩임이 떴다는 이야기입니다.

표본의 번뜩임 횟수는 200번 정도입니다.

여하간 이 자료대로라면 PRD는 상상 속의 이야기였고, 단순히 번뜩임은 운빨이다라고 끝날 이야기지만
이상하게 두번째만에 뜰 번뜩임은 낮고, 세번째만에 뜰 번뜩임은 높습니다.
그리고 그 차이는 비슷한 것이 아닌 꽤 유의미하게 차이가 납니다.

표본수가 너무 적어서 그렇다.
천 번이고 만 번이고 친다면 결과가 달라질 것이다라고 하신다면 할말은 없습니다만
50번일때도 100번일때도 150번일때도 모두 같은 형태의 그래프였습니다.




이번엔 PRD의 분포를 보여드리겠습니다.



읽히기 좋은 논문이 마련되어있었다면 제가 더 꼼꼼하게 준비 했을 수 있겠지만






해당 식으로만 간략하게 적혀있어서 역산을 해봤습니다. 1  3

초기 C 값의 의미는 블리자드 쪽에서 미리 정해놓은 공개되지 않은 값이고
저는 대충 27.5%의 99% 표준편차 신뢰값인 약 3을 나눈 9%정도로 설정했습니다.

이 때의 기댓값 역시 놀랍게도 첫 파란색 그래프와 큰 차이가 없습니다.



즉, 4충전 비전작렬 3~4번에 한번 꼴로 번뜩임은 터져준다는 의미는 똑같이 달성한다는 것이죠.




그리고 세 그래프를 합쳐보겠습니다.



판단은 여러분들의 몫이긴하지만
파란색은 통상적인 확률, 주황색은 보정값이 있다고 가정한 의사 난수, 초록색은 실제 데이터입니다.




그럼에도 역시 실험 표본수가 적다는 한계점은 큰 약점으로 다가옵니다.
그 때문에 보정값이 존재한다고 생각되는 이유를 세 가지로 압축할 수 있겠습니다.

1. 워크래프트3 때부터 치명타 및 spec_proc은 보정값을 가져왔다는 것.  1

2. 번뜩임을 사용한 신비한 화살은 마나 소모량이 0인데도 불구하고 가끔 번뜩임 프록이 터져 준다는 것.
   같은 이치로 4충전 비작을 많이 소모한 직후 (8~10번동안 연속해서 뜨지않았을 때)
   마법 훔치기나 마법 차단과 같은 적당한 마나 소모량으로도 바로 번뜩임이 터져 준다는 것.

3. 번뜩임이 잘 뜨지 않다가 몰아서 2연속 번뜩임이 나오는 경우가 많다는 것.



3번의 이야기는 약간의 극단적인 표본을 가져왔긴합니다만 제일 잘 설명해주는 내용입니다.


11이라는 소리는 11번의 비전작렬 끝에 번뜩임이 겨우 터졌다는 소리고
반대로 1, 2, 3은 1번만에, 2번만에, 3번의 비전작렬만에 번뜩임이 바로 터졌다는 소리입니다.

진지하게 표본에 이러한 경우가 무척 많습니다.



200번의 번뜩임중에 1, 2, 3만에 뜬 번뜩임은 무려 114번이고
많은 수의 비전작렬 뒤에 겨우 터진 번뜩임 뒤에 이어나오는 번뜩임은 무려 25%에 근접하게 떴으며
뜨고나서 두번, 세번만에 터진 것까지 합치면 무려 50%나 됩니다.

세번만에 터지는걸 제외하더라도 두번만에 터진다는게 40%입니다.
46을 200으로 나눠도 23%고 기존 (1-0.275)*0.275 = 20%의 유의수준을 생각해봐도 21%까지가 오차입니다.


또한 마지막의 51.92%는
"많은 수의 비전 작렬 뒤에 곧바로 나오는 추가 번뜩임 (27회)" 과
"전체 번뜩임 중 한 번만에 터진 번뜩임 (52회)" 의 비입니다.

정말로 번뜩임이 운에 의존한 랜덤의 결과였으면
200회의 번뜩임이 고루 퍼졌을텐데 왜 하필 7회 이상의 비전작렬 뒤에 곧 이어서 바로 터져나오는 것일까요 ?

또한, 10회 이상의 비전작렬 뒤에 나오는 추가 번뜩임은
총 10번중에 단 한번을 제외하고는 모두 번뜩임이 나왔습니다.
비로 따진다면 90%네요.




추측하기로는

소모한 마나에 따라서 일정 계수값이 증가하는 방식이고
첫 번뜩임이 터진 이후의 다음 번뜩임 수치에 합산 시켜서 스택을 소모시키는 방식

정도로 추측할 수는 있겠습니다.

이렇게 되면 PRD로 얻지못했던 첫 타 비전작렬로 인한 번뜩임의 수를 충분히 채워주면서
이상적인 평탄하고 차이가 없는 기댓값을 가진 PRD를 채용할 기반이 됩니다.



또한 재미있는 점은

PRD로 계산했을 때 12번째 4충전 비전작렬 이후부터는 초기값에 따라 음수가 나올 수도 있는데요.
이는 P(N) = C * N 에서 C값은 상수고 N값은 어찌됐건간에 점점 증가하는 횟수이므로 1이 넘어갈 수 있습니다.
그러므로, 식 자체에 1-[C*N]의 값이 있으므로 이는 음수가 나올 수 있는데
이 때가 4충전 비전작렬이 무조건 번뜩임을 만들어내는 일종의 브레이크 캡이라고 생각합니다.

13번째 비전작렬에 음수값이 나오기 시작하고 이후 15번째에 음수값인 방식으로 주기를 갖고 진동하게 되는데
놀랍게도 실험 중에 14번째 비전 작렬이 등장한 적이 없습니다.
즉, 아무리 못해도 13번 만에 4충전 비전 작렬은 번뜩임을 얻어줬다는 이야기입니다.





수많은 레이드 트라이를 거치고 수많은 번뜩임을 봐왔지만
오프닝 10비작으로도 번뜩임 하나만 덩그러니 떠있는 것을 보면 여간 화가 나는게 아닙니다.

체념하고 비전의 여파를 올리는 순간 띠용 ?
번뜩임이 붙어버려서 2번뜩임을 소모할 때도 있죠.

어쩌면 4충비작 27.5%니 깡신화 30%니 그저 숫자일 뿐이고
번뜩임은 그저 "태워진 마나"에 비례하게끔 나오는 프록일 수도 있습니다.

격전의 아제로스 때 "비전 소나기"는 3개를 착용해도 증가하는 확률은 10%로 일정했던건 아직도 이유를 모르겠습니다.

현재 비법은 쿨기 타이밍에 3번뜩임을 사용 할 수 있느냐 없느냐로 딜링 퍼포먼스가 큰 편차를 보이죠.
때문에 9.0.5에서는 대부분 벤티르를 채용하지 않을까 싶습니다.

쿨 줄이는 것보다 여파 4번뜩임은 솔직히 너무 매력적이거든요.








간단 요약

1. 운빨망겜을 방지하기 위해 와우는 전통적으로 확률보정을 넣어왔다.

2. 번뜩임은 단순 산술로는 해결되지 않는 기묘한 점이 여럿 있다.

3. 실제 보정이 들어간 그래프나 방식으로 얼추 설명이 된다.

4. 이래나 저래나 저는 개발자가 아니기 때문에 확실한 답을 내놓지는 못한다.
다만 합리적 의심은 충분히 고려해 볼만 하다.

5. 시간이 빠르게 지나갔다.





실험 중에 4충전 비작이 14번 연속으로 번뜩임이 뜨지않으신 분은 댓글로 제보를 해주세요.
다음글은 비법 영웅 99 로그찍기 팁으로 찾아뵙겠습니다.

그럼 안녕히 ~

와 2시에 글쓰기 시작했는데 벌써 6시 !



1. https://liquipedia.net/warcraft/Pseudo_Random_Distribution
2. http://www.inven.co.kr/board/dota2/3427/529
3. https://dota2.gamepedia.com/Random_distribution
4. https://www.doranslab.gg/articles/crit-strike-algorithm.html