排序和选择游戏算法

时间:2017-08-09 01:05:44

标签: mysql algorithm sorting select lua

我的游戏中有这么多人(约5万人)

这是一款PVP游戏。

每位玩家都有PVP得分和力量(得分用于第二次选择的等级和用力)

现在,让随机玩家选择对手。

规则是:

1.选择score±50 all players

2.在步骤1中的所有玩家中,选择我的power*80%~power*120%并随机选择其中一个

我使用BucketPile进行分数排序,每Bucket分数增量为50, (Bucket使用排序数组)

所以我可以快速找到所有score±50 players,但对于电源选择,我

必须通过Bucket中的数组从一个到长度。

我想改进我的算法。

我不是在寻找代码,只是为了任何建议。

先谢谢:)

这是我的抽象算法

class Bucket{
    Type *array;(a sorted array)
    int length;
};
BucketPile bp;
bp.setScoreStep(50)
for(i=0; i<n;i++){
  bp.insert(player)
}
for score 70 and power 100
the target score between 20~120
the target power between 80~120
Bucket b1,b2,b3 = bp.getBucketForScore(70)
b1 score is 1-50
b2 score is 51-100
b3 score is 101-150
Type targets[]
for(i=0;i<b1.length;i++){
   if(b1.array[i].power>=80&&b1.array[i].power<=120){
          push to an array targets
   }
}
for b2,b3,random one player in the targets 

1 个答案:

答案 0 :(得分:2)

如果你有在他们面前,他们会有很多人。但是你在谈论在计算机上处​​理数字。这里50.000什么都没有。

排序只需要额外的时间而且没有必要,因为你想要一个得分为±50且你的力量为±20%的随机玩家。排序列表的随机播放器仍然是随机播放器。它没有任何区别。

迭代您的玩家列表,建立一个具有有效分数和权力的新玩家列表。然后选择该新列表的随机元素。

在我的普通笔记本电脑上,这需要不到5微秒。