数组遍历从最大值到最大值

时间:2017-05-21 02:36:59

标签: java arrays

我正在与N名玩家进行一场简单的比赛。假设N = 5那么,玩家将是:

  

玩家1,玩家2,玩家3,玩家4,玩家5。

在游戏中,五分之一将成为赢家。这是获胜的逻辑。 每个玩家可以从跟随数组得到任何一个值,即数组中的随机值。

0,1,2,4,8,16

得分最高的玩家将成为赢家。

对于示例案例,我已经生成了0到大小的得分数组(6)之间的随机索引,并分配给每个玩家。

    int[] data = {0,1,2,4,8,16};
    int[] samples = new int[5];

    Random random = new Random();
    for(int j=0;j<5;j++){
        int value = random.nextInt(6);
        samples[j] = data[value];
    }

然后,我得到了这样的结果:

0 16 2 8 1

如果得分最高,则得分最高的人将获胜。 在上述情况下,玩家2获胜,得分为16。

这是第一轮。

现在,我想从播放器2旁边分配随机生成的五个分数,即播放器3

以下是第二个分数样本。

4 1 2 0 16

我想要的是分配这些分数,如:

Player3 = 4
Player4 = 1
Player5 = 2
Player1 = 0
Player2 = 16

以上情况属于第二轮。怎么做到这一点? 如何迭代这样的数组,以便我可以找到10轮的获胜者。

任何建议,帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

只要这只是练习而不是家庭作业,这是有效的:

var array = products.map((element, index) => {
    element.field = registered.frifield;
    if(settings.latefeeamt > 0 && settings.frilatefee === true) { 
        element.price += settings.latefeeamt; 
    }
    return element
});

答案 1 :(得分:1)

也许这对一些人有帮助。从某个索引samples开始迭代start的所有元素:

  for (int j = 0; j < samples.length; j++) {
      int si = (start + j) % samples.length;
      System.out.println("Loop count: " + j + " looking at samples[" + si + "]");
  }