首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ELO系统的优化表设计

ELO系统的优化表设计
EN

Stack Overflow用户
提问于 2022-04-25 11:45:16
回答 1查看 85关注 0票数 0

我试图使用postgresql使用django创建elo系统。

下面的描述是我想象中的一个系统。

按日期字段排序的Elo表。表中有两个玩家的elo数据字段。

新游戏创建时,计算出的elo数据将直接累积在表上。这是当一个游戏是最新的工作。

代码语言:javascript
复制
      Elo Table

Date     | 2022-04-01
Player A | 1015.0 (Win)
Player B | 985.0

Date     | 2022-04-02
Player A | 1021.0 (Win)
Player B | 979.0
                   <--------------------+
// new game created                     |
// this data will be located at here ---+
Date     | 2022-04-03          
Player A | 1012.0       
Player B | 988.0  (Win)

然而,当过去的游戏创建时,出现了不熟悉的情况。

首先,用以前的数据计算当前游戏的elo数据。第二,所有elo数据在此游戏之后将被更新。

代码语言:javascript
复制
      Elo Table

Date     | 2022-04-01
Player A | 1015.0 (Win)
Player B | 985.0
                     <-----------------------+
Date     | 2022-04-03                        |
Player A | 1021.0 (Win)  (this value will be |
Player B | 979.0           re-calculated.)   |
                                             |
// past game created.                        |
// this data will be located at here --------+
// all data after this will be updated.
Date     | 2022-04-02            
Player A | 1002.0       
Player B | 998.0  (Win)

我找不到其他解决办法了。此外,我认为这个解决方案并不完美,因为当您创建过去的游戏,,您应该重新计算大量的elo数据,如果您有大的表。

  1. 是数据库能处理这个吗?它不是很慢吗?

  1. ,它可以进行大型查询。是不可避免的吗?

有没有管理ELO系统的想法?我看到了thisthis,但是我找不到其他解决方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-28 15:40:34

将数据存储与应用程序处理分开。

  • 使用表存储数据。不要尝试用SQL.

编写ELO算法。

  • 由于ELO相当复杂,所以使用应用程序语言计算ELO。只需重新加载必要的行(整个表?),重新计算排名,然后更新或重建表。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71999007

复制
相关文章

相似问题

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