我想從2到10名玩家中隨機選擇一個贏家。每個球員都有獲勝的機會。有人有50%,有人有10%。選擇百分比隨機贏家
比方說,我們有2名球員。一個球員有20%,其他球員有80%。我如何選擇這兩者之間的勝利者?
球員是在陣列
var players = {
player1: {
chance: 20 //%
}
player2: {
chance: 80 //%
}
}
//Select winner from json
我想從2到10名玩家中隨機選擇一個贏家。每個球員都有獲勝的機會。有人有50%,有人有10%。選擇百分比隨機贏家
比方說,我們有2名球員。一個球員有20%,其他球員有80%。我如何選擇這兩者之間的勝利者?
球員是在陣列
var players = {
player1: {
chance: 20 //%
}
player2: {
chance: 80 //%
}
}
//Select winner from json
(假設百分比全加起來爲100)
您首先必須訂購球員。然後從1到100的隨機數,並找出哪個球員的隨機數屬於。
例如:
// Modified json to array so we can easily loop through them
// If you would like help turning the json to an array, I can provide code for that upon request
var players = [
{
chance: 20
},
{
chance: 40
},
{
chance: 40
}
];
// Generate random number
var perc = Math.random() * 100; // between 0 and 99.999~
// Save where we are in the percentage
var currentPerc = 0;
// Loop through the players and check who the random number chose
for (var pID = 0; pID < players.length; pID++) {
// Check if the current player we are looking at has won
if (perc < (players[pID].chance + currentPerc)) {
alert("PLAYER " + (pID + 1) + " HAS WON.");
// Do player winning code here
break; // break out of the loop, we're done
} else {
currentPerc += players[pID].chance;
}
}
在上述例子中,假設所述隨機數選擇45(0.45 * 100自的Math.random給我們0.0至0.99〜)。 這意味着玩家2贏
0 to 20 = Player 1 wins
21 to 60 = Player 2 wins
61 to 100 = Player 3 wins
使用45的隨機數選擇的第一次迭代,我們檢查,如果玩家1贏得。他沒有,所以我們將玩家1的比例添加到「當前比例」。
然後在第二次迭代中,我們檢查玩家2.由於45 <(20 + 40),玩家2贏得了選擇。我們提醒他已經贏得並將爲此做一些代碼。
如果(randomNum < = player1.chance)然後player2.wins()否則player1.wins()其中randomNum是1-100
這對超過2名球員不起作用 – iagowp
請在給出答案前仔細閱讀問題。他們要求一個可以處理2到10名球員的解決方案。 –
哦,我嘗試了。我浪費了10分鐘的時間嘗試在正確的代碼中進行編輯,但該網站不斷拒絕我的代碼,因爲它表示我的代碼是未被格式化爲代碼的代碼,即使預覽代碼顯示我的代碼被編碼爲代碼。即使我使用了四個空格的正確代碼,代碼的編碼也沒有很好地編碼。 – JarHead0844
var players = [20,5,15,40,20];
var getWinner = function(players){
var random = Math.random();
var sum = 0;
for(var i = 0; i < players.length; i++){
sum+= players[i]/100;
if(random<= sum) return i;
}
}
返回玩家人數(指數0)誰獲勝
隨機抽取1到100之間的數字。如果是1-20,則Player1獲勝。如果是21-100,球員兩勝。另外,你定義了'player1'兩次。 – Santi
桑迪剛剛說的隨機函數 – Tom
請閱讀[問]。重要短語:「搜索和研究」和「解釋......阻止你自己解決它的任何困難」。 –