首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ELO评级- mysql设计

问ELO评级- mysql设计
EN

Stack Overflow用户
提问于 2014-09-26 00:14:55
回答 1查看 1K关注 0票数 3

我是一个全新的编程新手。我刚做了一个供个人使用的系统。可以添加两名选手的体育比赛结果。

到目前为止,一切运行正常。现在我正在考虑添加一个ELO评级系统。

我不能理解,我应该如何设计我的数据库。

问题是,我不能理解,如何保持正确的评分计算记录,以防任何游戏结果将在任何时候被删除。例如,有人会添加错误的数据,游戏条目应该被删除。

那么,应该如何进行数据库设计,如果我从参赛作品的中间删除任何游戏,评分将正确重新计算?

我的问题的一个说明性的例子,我不能解决(评分计算只是信息性的):

代码语言:javascript
复制
 Player1 (rating 1200), Player2 (1200)
 Game1 played, player1 wins.
 Rating after game: P1:1231, P2:1169
 Game2 played, Player1 wins.
 Rating: P1:1259, P2:1141
 Game3, Player2 wins
 Rating: P1:1220, P2:1180

所以,然后我意识到,第二场比赛有错误的数据,我想删除它。

应该发生什么?我删除了game2,然后脚本应该改变两个球员的评级,如抢夺评级从一场比赛之前,从后game1。这将是P1:1231,P2: 1169,然后在删除的游戏之后重新计算所有评级。所以Game3,玩家获胜,评分应该是P1:1198,P2:1202

我不能删除game2和它的评分差异...评级必须重新计算从前一场比赛,并为所有游戏后发挥。

如果有3个或更多的玩家,并且他们在我想要删除的游戏之后玩过游戏,事情就会变得更复杂。因为他们的评级发生了变化。如果一个游戏被删除了,那么之后玩的所有游戏的评分变化都应该逐一重新计算。

我希望我的问题清楚了..。

所以问题是,你能不能给我一个完整的php/.mysql初学者的提示,应该是什么是数据库的逻辑和我的情况下计算评级的过程。

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2014-09-26 00:48:40

基本上,将有两个表:players(name,whatever else,rating)和games(player_id_white,player_id_black,result=1,0,-1,date)。

删除游戏后,将所有玩家的评分重新设置为初始值,并从头开始重新计算。只需读取按日期排序的游戏表,更新内存中的评级,最后将它们写回玩家表。

这在某种程度上是简单而粗糙的解决方案,但应该对你有效,除非(直到)你有成千上万的玩家和数百万的游戏。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26043337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档