현재 이 글은 notion ai가 작성하였습니다.
ELO Rating System은 경기 결과를 바탕으로 선수의 랭킹을 업데이트하는 방식을 사용합니다. 이 시스템은 체스 랭킹 시스템으로는 적합하지만, 다른 종목에 적용하기에는 한계가 있습니다. 이 시스템은 랭킹 업데이트가 느리게 이루어지는 문제와 한 선수가 다른 선수들과 경기를 하지 않는 경우, 랭킹을 업데이트하기 어려운 문제가 있습니다.
ELO Rating System은 체스 선수들의 순위를 결정하는 데에 사용되는 체스 랭킹 시스템입니다. 이 시스템은 경기 결과를 바탕으로 선수의 랭킹을 업데이트합니다. 이제 이 시스템을 구현하고 분석해보도록 하겠습니다.
ELO Rating System은 다음과 같은 공식을 사용하여 선수들의 랭킹을 계산합니다.
NewRating = OldRating + K * (Result - Expected)
여기서,
이제 이 공식을 바탕으로 ELO Rating System을 구현해보겠습니다.
class Player:
def __init__(self, name, rating):
self.name = name
self.rating = rating
def update_rating(self, opponent_rating, result, k=32):
expected = 1 / (1 + 10**((opponent_rating - self.rating)/400))
self.rating += k * (result - expected)
위 코드는 Player 클래스를 정의하고, update_rating 메소드를 작성한 것입니다. 이제 이 클래스를 사용하여 랭킹을 업데이트해보겠습니다.
player1 = Player('Kim', 1500)
player2 = Player('Lee', 1600)
player1.update_rating(player2.rating, 1)
player2.update_rating(player1.rating, 0)
print(player1.rating) # 출력값: 1516
print(player2.rating) # 출력값: 1584
위 코드는 player1과 player2의 초기 랭킹을 설정하고, player1이 player2를 이기는 결과가 나온 뒤 랭킹을 업데이트하는 과정을 보여줍니다.