好的,所以我有大约20支队伍,每个人在他的个人排名列表中排名上下每个队。喜欢以下格式
-Barcelona "Move up on the list" "Move Down on the list"
-Arsenal "Move up" "Move Down"
-Liverpool "Move up" "Move Down"
所以在这个例子中,对于这个特定的用户,巴塞罗那排名第1,阿森纳排名第2等。
现在我想在考虑每个个人排名列表后创建一个全球排名系统。
从逻辑上讲,我如何做到这一点? 较小的等级意味着更高的位置,所以我不能只拿出总和,看看哪个更大。或者我可以拿一笔钱看看哪个更小?
我认为我可以在每个团队中添加一个“全球排名”整数,看看哪个更小,但这种方法是对的吗?
答案 0 :(得分:1)
您可以使用averages来表示global_rankings,这也可以使global_rankings保持最新变得相对简单。
如果您的global_ranking是该团队的平均排名(给定团队/列表数量的每个列表的排名索引总和),则global_ranking上每个列表更改的值为1 /列表数。
这意味着在列表上移动一个团队需要将其global_ranking减少1/number of lists
,而在列表中向下移动的团队需要将其global_ranking增加1/number of lists
(假设等级随着列表向下移动,索引会变大。
只要每个新列表初始化为与当前global_ranking具有相同的顺序,这应保持准确。
即便如此,您可能仍希望定期(可能每晚)重新计算平均值/ global_rankings以防万一。
这种方法应该相对较快,因为在数据库中获取列表总数应该相对简单,每次请求只需要完成一次。
您可以定期重新计算每个团队的平均值(想想几分钟甚至每几秒钟)。您可能会更轻松地使用此方法,因为它意味着您不必担心在正常按钮按下之外更改列表。性能方面,它可能在您的服务器/数据库上有点重,但并不一定需要您的最终用户看到。有几种不同的方法可以做到这一点。
我能想到的方法: