我正在寻找一个好的算法推荐。
我有用户和成就。用户创建成就,然后将其提供给其他用户。与每个成就相关联的是用户指定的点值。一个用户的总分是他们所有成就的总和。
基本上:
Achievement :
owner = Alias
points = int
User :
achievements = list(Achievement)
def points() :
sum([achievements.points])
好的,所以这个系统显然非常适合游戏。您可以创建许多帐户并互相取得大量成就。我试图通过将点值缩放到与用户指定的不同的值来减少一点。
- 假设所有用户都是诚实的,但他们只是很难以不同的方式衡量。我应该如何标准化点值?AKA 一个用户为每个简单的成就给出 5 分,另一个给出 10 分,我怎样才能将它们标准化为一个值。目标是分数与难度成正比的分布。
- 如果一个用户不擅长判断分值,我如何根据获得成就的用户数来判断难度?
- 假设用户可以大部分被划分为不相交的组,其中一个用户将成就授予一整套其他用户。这对前两种算法有帮助吗?例如,用户 A 仅向以奇数结尾的用户授予成就,而用户 B 仅向以偶数结尾的用户授予成就。
- 如果每个人都是恶意的,我能离让用户无法过度夸大他们的积分值还有多远?
注意:给予用户的质量与他获得的成就没有任何关系。许多给予者只是机器人,它们自己没有收到任何东西,但会自动奖励用户的某些行为。
我目前的计划是这样的。我有一个从我那里获得成就的人分配 10 分。如果我总共给 55 人发放了 10 个成就,我的分配是 550。然后根据获得它的人数分配给每个成就。如果分布是[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
获得每项成就的人,那么点值将是[50, 25, 16.6, 12.5, 10, 8.3, 7.1, 6.25, 5.5, 5]
。
欢迎和赞赏我的方法和替代建议的任何问题。另外,发布您能想到的我错过的其他案例,我会将它们添加到列表中。谢谢!