如何利用Elo的评级系统正确实现一切到一切的比较?

时间:2012-10-26 19:02:40

标签: php comparison scalability

我已经设法在物品上实施Elo的评级系统。我所比较的并不重要,但是对于这个例子,假设我们试图通过用户输入找出主观上最好的数字(1 | 2 | 3 | 4 | 5,但这可以是任何范围/设置)

最常用的方法是选择集合中的两个随机元素,然后让用户选择其中一个元素。请注意,这并不能正确地比较一切;你可能会得到重复的比较,有些组合可能永远不会被比较。

我的想法是填充一个组合表,其中包含所比较的所有独特组合(行数:{count Array elements}选择2 /例如:5 nCr 2)。 A和b是得分表的外键,用于保存elo评级系统的数据。

如果元素消失,则可以清理表格,并且在添加新元素时,会向表格添加一组新的排列。

id   a    b
1    1    2
2    1    3
3    1    4
4    1    5
5    2    3

然后,用户将从组合表中显示随机选择的组合:([...] WHERE NOT id IN (ids of combinations this user has already set a vote for))。如果没有剩下的东西,会显示一条消息“所有内容已经与所有内容进行了比较,请在{cron_time}之后回来!”。

用户应该能够在没有注册的情况下进行比较。即插即用。这是出现的第一个问题之一。如何识别独特用户?会话可以工作,但用户可以轻松更新。想法?

此实施可扩展可怕。对于每个新用户(processed_combinations,即使每天截断,也可以变大)和组合表。当然,将1比5与少数用户进行比较可以正常工作,但如果我们想要比较1到100甚至数千呢?

您对更好的实施有什么想法?

0 个答案:

没有答案