是否有任何软件或网络服务可用于俱乐部级Elo评分?


19

是否有任何软件(或基于Web的服务)可让您跟踪俱乐部级别的本地Elo评分?

这些等级与官方的Elo等级没有任何关系,只是俱乐部内球员范围内的Elo等级(即,各种社交锦标赛中的游戏都会计算该等级)。


2
对于项目而言,这是一个有趣的想法。
伊芙·弗里曼

我是为我们当地的俱乐部手工做的。几乎与将数据输入程序来完成工作一样容易。
yobamamama

Answers:


10

即使它不可用,类似的东西也很难实现。这是一个极其愚蠢和简单的评分系统的示例,仅是为了给您一个想法。但是我不认为使用实际的Elo公式要困难得多。

编辑:我编辑我的实现以使用此处公式给出的Elo公式(不包括楼层)

def get_exp_score_a(rating_a, rating_b):
    return 1.0 /(1 + 10**((rating_b - rating_a)/400.0))

def rating_adj(rating, exp_score, score, k=32):
    return rating + k * (score - exp_score)

class ChessPlayer(object):
    def __init__(self, name, rating):
        self.rating = rating
        self.name = name
    def match(self, other, result):

        exp_score_a = get_exp_score_a(self.rating, other.rating)

        if result == self.name:
            self.rating = rating_adj(self.rating, exp_score_a, 1)
            other.rating = rating_adj(other.rating, 1 - exp_score_a, 0)
        elif result == other.name:
            self.rating = rating_adj(self.rating, exp_score_a, 0)
            other.rating = rating_adj(other.rating, 1 - exp_score_a, 1)
        elif result == 'Draw':
            self.rating = rating_adj(self.rating, exp_score_a, 0.5)
            other.rating = rating_adj(other.rating, 1 - exp_score_a, 0.5)

其工作原理如下:

>>> bob = ChessPlayer('Bob', 1600)
>>> john = ChessPlayer('John', 1900)
>>> bob.rating
1600
>>> john.rating
1900
>>> bob.match(john, 'Bob')
>>> bob.rating
1627.1686541692377
>>> john.rating
1872.8313458307623
>>> mark = ChessPlayer('Mark', 2100)
>>> mark.match(bob, 'Draw')
>>> mark.rating
2085.974306956907
>>> bob.rating
1641.1943472123305

这是我最初的python实现:

class ChessPlayer(object):
    def __init__(self, name, rating):
        self.rating = rating
        self.name = name
    def match(self, other, result):
        if result == self.name:
            self.rating += 10
            other.rating -= 10
        elif result == other.name:
            self.rating += 10
            other.rating -= 10
        elif result == 'Draw':
            pass

其工作原理如下:

>>> bob = ChessPlayer('Bob', 1600)
>>> john = ChessPlayer('John', 1900)
>>> bob.match(john, 'Bob')
>>> bob.rating
1610
>>> john.rating
1890
>>> mark = ChessPlayer('Mark', 2100)
>>> mark.match(bob, 'Mark')
>>> mark.rating
2110
>>> bob.rating
1600
>>> mark.match(john, 'Draw')
>>> mark.rating
2110
>>> john.rating
1890  

我认为Elo可能就是那样简单。:)
前夕弗里曼

真好 如果OP希望使用例如实际的USCF评级算法对此进行修改,则可以在本文档的第2部分中找到数学细节:glicko.net/ratings/rating.system.pdf
ETD

2
谢谢,但是我真的很好奇,并且自己实现了Elo公式:)。
Akavall 2012年

对于像国际象棋俱乐部这样的小世界,我认为最好没有地板,否则,如果非常弱的玩家玩很多游戏,则很快就会膨胀。
2012年

对于地方俱乐部的排名,elo glicko的所有复杂性无论如何都不会增加任何实际的收益
yobamamama

6

似乎rankade是我们针对体育,游戏等的排名系统,可以满足您的需求。

它是免费使用的,旨在管理从小到大的一组玩家的排名(以及统计数据,包括对战统计数据,等等)。

Rankade不使用Elo,但是它的算法(称为ree算法)虽然更复杂(这是最著名的评分系统之间的比较,包括EloGlickoTrueSkill),但是如果您进行一对一比赛,则其类似于Elo只要。


2
非常酷的webapp!
andras

1
我已经尝试过了,看来很适合我的需求;简单,干净,可以在比赛开始后添加球员。我想建议允许用户自定义CSS。刚刚为用户提供了一个文本区域(或contenteditable div),供用户粘贴其CSS
Coisox

4

我刚刚下载并试用了名为ELORater的 Windows轻量级免费软件,它似乎提供了您所需要的东西。您可以为俱乐部创建一个“组”,然后将球员以及您希望他们拥有的任何初始等级添加到该组中。然后,您只需输入所有玩过的游戏的结果,程序就会为您维护更新的玩家评分列表。


仍然在线吗?
2015年




0

http://elorankings.com

允许您创建自定义elo等级并控制某些参数。通常由视频游戏社区使用,但可以用来创建排名和管理任何东西的elo等级。很好用。保留完整的比赛历史记录,并允许您单独查看球员的历史记录,WL以及他们每场比赛的得分变化情况。我将其用于每周运行的一次粉碎比赛:http : //elorankings.com/rankings.aspx?id=1


网站似乎已关闭或不再使用
andrewb '18


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.