본문 바로가기
프로그래밍

Elo를 적용해서 레이팅 포인트 계산하는 예제

by bantomak 2023. 3. 13.

 


예상 승률을 계산하는 공식

여기서 400은 매직 넘버로 각자의 상황에 따라서 조절이 가능한 값이다. 보통 K 상수라고 불리운다.

 

LiveRating을 계산하는 공식

예시 코드 

double myK = 400; // 매직 넘버 K 상수
double e = (oppositeScore - myScore) / myK;
double winRate = 1 / (Math.Pow(10, e) + 1);

var winRateMin = 0.0;
var winRateMax = 0.0;

// winRate 최소값이 0.0이 아니면 최소값으로 보정해준다
if (winRateMin != 0.0)
{
   winRate = Math.Max(winRateMin, winRate);
}

// winRate 최대값이 0.0이 아니면 최대값으로 보정해준다
if (winRateMax != 0.0)
{
   winRate = Math.Min(winRateMax, winRate);
}

double resultScore = MatchResult switch
{
   MatchResult.Win => myK * (1 - winRate), 
   MatchResult.Defeat => myK * (0 - winRate),
   _ => myK * (0.5 - winRate),
}

var newScore = beforeScore + resultScore;

 

보통 롤 열심하시는 분들은 레이팅에 대해서 많이 들어보셨을텐데 물론 실제 적용되는 버전과는 차이가 있을 것이다.

댓글