我必须为游戏实施组合,其中玩家被随机选择为来自n个玩家的两个小组。
例如:
如果有四名球员 - A B C D
AB vs CD - 第一轮球队 AC vs BD - 第二轮比赛 AD vs BC - 第三轮球队
如果有六名球员 - A B C D E F
ABC vs DEF ADE与BCF
每次玩家玩独特玩家时,没有两个玩家可以连续三次与同一玩家一起玩游戏。有没有办法产生这种组合。
感谢您的回答。
答案 0 :(得分:1)
它易于存档你可以创建一个函数,只需传入你的4或6个名字作为参数或更好的数组然后只需随机混合这个数组
事实上无偏见的随机播放算法是Fisher-Yates(又名Knuth)Shuffle。
请参阅https://github.com/coolaj86/knuth-shuffle
您可以看到great visualization here(以及原始帖子linked to this)
function shuffle(array) {
var currentIndex = array.length
, temporaryValue
, randomIndex
;
// While there remain elements to shuffle...
while (0 !== currentIndex) {
// Pick a remaining element...
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex -= 1;
// And swap it with the current element.
temporaryValue = array[currentIndex];
array[currentIndex] = array[randomIndex];
array[randomIndex] = temporaryValue;
}
return array;
}
像这样使用
var arr = [2, 11, 37, 42];
shuffle(arr);
console.log(arr);
使用了更多信息about the algorithm。