我的JavaScript代碼中有一個數學問題。我需要將給定數量的玩家隨機分成兩個小組,每次 - 如果玩家想再玩一次 - 球隊再次形成,他們應該有所不同,直到所有組合形成爲止。如何隨機多次將x個玩家分成兩支隊伍,每次都會有所不同?
比方說,我有4名球員,因此,所有的組合如下:
[1,2],[1,3],[1,4],[2,3],[2,4],[3,4]
然而,因爲球隊側不算數,只有3個不同的組合:
[1,2] vs [3,4]
[1,3] vs [2,4]
[1,4] vs [2,3]
當所玩遊戲的數量超過組合數量時,應該重新開始......即隨機選擇三個組合中的一個,隨機選擇下一個組合......
但是有一個轉折點......當我的數學技能很奇怪時,我的數學技能非常難以向南,而其中一名球員需要休息一場比賽。所以,有5名球員的所有比賽組合是(最後一個數字是球員休息):
[1,2] vs [3,4] [5]
[1,2] vs [3,5] [4]
[1,2] vs [4,5] [3]
[1,3] vs [2,4] [5]
[1,3] vs [2,5] [4]
[1,3] vs [4,5] [2]
[1,4] vs [2,3] [5]
[1,4] vs [2,5] [3]
[1,4] vs [3,5] [2]
[1,5] vs [2,3] [4]
[1,5] vs [2,4] [3]
[1,5] vs [3,4] [2]
[2,3] vs [4,5] [1]
[2,4] vs [3,5] [1]
[2,5] vs [3,4] [1]
在JavaScript中怎麼可能讓這些球隊形成?即走進心靈
的一件事是給每個玩家一個獨特的價值(10^X),例如:
player1.value = 10;
player2.value = 100;
player3.value = 1000;
player4.value = 10000;
...然後循環,形成團隊檢查時,如果一個球隊的總價值等於最後的值。
有人可以用數學/ JavaScriptly更有才華請幫我解決這個編碼問題。謝謝!
聽起來不錯 - 創建所有組合,然後隨機選取 - 但對「位掩碼」和「1 <<(n-1)」沒有任何理解。一些示例代碼會很棒! – micadelli
對不起,遲到的迴應,我一直在喝咖啡和晚餐:)我已經將樣品添加到 –
以上的帖子中了!試圖運行這個和它的工作,雖然我還沒有得到那些「面具:球員[我] .Mask |球員[j] .Mask」和「如果((t1.mask&t2.mask)=== 0) 「... 但我會。然而,我不知道這是否是因爲我的英文不好,但是這將球員分成了兩名球員,我只想將所有球員分成兩個獨立的球隊。所以,9名球員將被分爲5比4。代碼應該如何改變。 – micadelli