什么是我无法弄清楚的优雅模数?

时间:2010-02-09 19:49:57

标签: javascript math

确定以下内容的好方法是什么。

你有一个游戏玩家的桌子,大小为N.每轮,每个玩家轮流。

你知道应该首先进入的玩家的索引,并且每个玩家将在数组中上升,并在它到达最后一个索引时循环回到0。例如,如果指数3的玩家先行,那么4会成为第二,2则是最后一次。

如何计算回合中最后一位玩家的指数?

这是一种方式:

var startPosition = 3;
var numberOfPlayers = 10;

for (var i=0;i<numberOfPlayers;i++) {
  startPosition++;
  if (startPosition == numberOfPlayers) startPosition = 0;
}

2 个答案:

答案 0 :(得分:7)

(startPos + numberOfPlayers - 1) % numberOfPlayers

答案 1 :(得分:1)

结果总是startPosition > 0 ? startPosition - 1 : numberOfPlayers - 1,即除了startPosition为0的情况外,它总是比startPosition小一点。

更“优雅”的模数可能类似于(startPosition + numberOfPlayers - 1) % numberOfPlayers