Je me suis renseigné sur la meilleure façon d'effectuer un mélange de tableaux en JavaScript et j'ai découvert le modèle de Fisher-Yates (dans la section cet article et en cet article ). J'ai essayé d'utiliser les deux fonctions d'exemple indiquées dans les articles, mais lorsque je veux mélanger le tableau plus d'une fois et affecter des résultats différents à deux variables différentes, ils finissent par être exactement les mêmes.
function shuffle(array) {
var i = 0,
j = 0,
temp = null
for (i = array.length - 1; i > 0; i -= 1) {
j = Math.floor(Math.random() * (i + 1))
temp = array[i]
array[i] = array[j]
array[j] = temp
}
return array;
}
var deck = ["bat", "black-cat", "blood", "bone", "brain", "broom", "candle", "candy", "castle", "cauldrom", "coffin", "costume", "death", "devil", "fish-bone", "full-moon", "ghost", "grave", "grave-yard", "half-moon", "horror", "lantern", "magic", "monster", "owl", "pumpkin", "skull", "spider", "spider-web", "tree", "tree-2", "witch", "witch-hat", "zombie-1", "zombie-2"];
var playerHand = shuffle(deck);
var computerHand = shuffle(deck);
console.log(playerHand);
console.log(computerHand);
Dans la console, playerHand retourne :
["castle", "costume", "coffin", "candy", "blood", "death", "horror", "skull", "spider", "broom", "owl", "tree", "spider-web", "pumpkin", "grave", "devil", "brain", "ghost", "witch-hat", "magic", "bat", "black-cat", "full-moon", "tree-2", "cauldrom", "bone", "grave-yard", "half-moon", "zombie-1", "lantern", "monster", "zombie-2", "candle", "fish-bone", "witch"]
Et computerHand revient :
["castle", "costume", "coffin", "candy", "blood", "death", "horror", "skull", "spider", "broom", "owl", "tree", "spider-web", "pumpkin", "grave", "devil", "brain", "ghost", "witch-hat", "magic", "bat", "black-cat", "full-moon", "tree-2", "cauldrom", "bone", "grave-yard", "half-moon", "zombie-1", "lantern", "monster", "zombie-2", "candle", "fish-bone", "witch"]
C'est probablement très simple, mais j'ai du mal à comprendre. Je pensais que le fait de rappeler la fonction renverrait un résultat différent.