我已经为我的锦标赛编写了奖金分配算法。我只是想知道是否有人可以看到我没有想到的任何错误或边缘情况,甚至可以写出更好,更有效的东西。 因此,假设在锦标赛结束时,玩家获得最终分数,并根据他们的分数对其进行排序和排名,例如:
Rank Score %total prize
1 50 40%
2 50 25%
3 40 15%
4 20 10%
5 20 5%
6 16 3%
7 10 2%
我想要的是,在排名A和排名B的平局的情况下,将这些排名的奖金加总并除以2 OR,如果排名A,排名B和C之间的关系是这些的总和排名奖励除以3,等等。如果排名之间没有关系,他们就会得到预定的奖金。所以这是我到目前为止写的伪代码:
rank=0
while(rank < Max # prizes)
{
prize= %prizeForRank(rank)
offset=1
while(scoreList[rank+offset]!=null && scoreList[rank]==scoreList[rank+offset])
{
prize += %prizeForRank(rank+offset)
offset++
}
prize= prize / offset
for(int k=0; k<offset;k++)
{
prizeOfPlayer[k+rank] = prize
}
rank+=offset
}