예상 승률을 계산하는 공식
여기서 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;
보통 롤 열심하시는 분들은 레이팅에 대해서 많이 들어보셨을텐데 물론 실제 적용되는 버전과는 차이가 있을 것이다.
'프로그래밍' 카테고리의 다른 글
Ubuntu 프로세스 실행 시 nohup과 &에 대해서 (26) | 2023.05.12 |
---|---|
이벤트 소싱 패턴(Event Sourcing Pattern)에 대해서 (0) | 2023.03.30 |
GUID를 향한 여정 - 트위터가 만든 Twitter Snowflake (0) | 2023.02.24 |
프로그래밍 공부 방법에 대해서 (0) | 2023.02.06 |
JQuery 사용해서 HTML에서 Controller Actions 호출하는 방법 (0) | 2023.01.26 |
댓글