0
votes

Table de tri aléatoire

J'essaie de mélanger le jeu de cartes d'origine, puis soustrayez 2 cartes de la pont mélangée, étant des cartes de joueur. Puis avant de passer au joueur 2, j'aimerais mélanger à nouveau les cartes, dont la longueur devrait être à 50 (52-2). Le deuxième joueur je vais répéter le processus (50-2).

Notez l'ordre de la troisième réseau de journaux de console avant de décompresser le quatrième journal de la console et FreshDeck__01 dans le JavaScript. L'ordre est bon avant de noter. Je veux cet ordre, puis pour mélanger. P>

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Untitled Document</title>
<link href="pokerTryOne.css" rel="stylesheet" type="text/css">
</head>

<body>
	
	<div class="main">
	
	<header><h1 class="title"><button onClick="dealIt()">Click Button to Deal</button></h1></header>
			<div class="P1"><p>Pot:</p><div class="dealItP1"></div></div>
			<div class="P2"><p>Pot:</p><div class="dealItP2"></div></div>
			<div class="P3"><p>Pot:</p><div class="dealItP3"></div></div>
			<div class="P4"><p>Pot:</p><div class="dealItP4"></div></div>
		<div class="dealBet"></div>
		<div class="flopIt"></div>
		<div class="flopBet"></div>
		<div class="turnIt"></div>
		<div class="turnBet"></div>
		<div class="riverIt"></div>
		<div class="riverBet"></div>	
	</div>
<script type="text/javascript" src="pokerTryOne.js"></script>
</body>
</html>


5 commentaires

Array # Trier Ne crée pas de nouveau tableau .


Quelle est ta question? Que veux-tu accomplir?


Je voudrais randomiser FreshDeck_01 dans un nouveau tableau et définir cette valeur égale à FreshDeck_01_fresh


Plutôt que de télécharger .zip s, envisagez simplement de mettre le code dans votre question - voir meta.stacapverflow.com/questions / 358992 / ...


@Mathewstratton: Découvrez mon Solution pour matrocares . Il met en œuvre algorithme de pêcheur qui est le Le plus rapide Procédé éligible de matrice de matrimonie.


3 Réponses :


0
votes

Trier () n'est pas la fonction correcte pour cela, shuffle a été recouvert de manière approfondie ici Ce et de nombreux autres endroits sur le net.


0 commentaires

1
votes

Quand je voulais réaffecter FreshDeck_01 en le randirant à nouveau je recevoir le même tableau qu'avant.

non, vous ne recevez pas de tableau qui est commandé de la même manière qu'auparavant.

Le problème ici est que Array.Prototype.sort () trie le tableau en place . Cela signifie que vous mélangez votre tableau d'origine FreshDeck_01 FreshDeck_01_fresh . Si vous inspectez réellement votre tableau avant d'exécuter votre fonction Shuffling, vous verrez que la commande est modifiée: xxx

Si vous devez conserver une copie de votre tableau sans arrache, vous pouvez Utilisez une affectation de décomposition [... x] pour le faire. Une affectation simple ne fonctionnerait pas, car elle ne créerait qu'une référence à la même matrice. xxx

Tout ce qui étant dit, il y a probablement de meilleures façons de shuffer les éléments de réseau que votre approche . Je ne suis pas expert dans ce domaine, je vais donc laisser cette recherche à vous.


2 commentaires

Array Shuffling par Trier () Méthode ne produit pas Produit Vraiment Sortie aléatoire. Fisher-Yates algorithme est le Méthode admissible la plus rapide . Vous pouvez consulter mon Solution à cet égard lequel est presque aussi compact que le vôtre, tout en produisant du shuffle aléatoire valide.


Eh bien, mon intention était de répondre à la question initiale et de pointer le PO à son malentendu de de tri plutôt que de fournir un algorithme de mélange viable. L'OP a édité la question depuis et demande maintenant quelque chose de complètement différent. BTW, je viens juste d'être tombé dans cet outil de visualisation agréable qui offre également une implémentation très simple de Fisher-Yates: bost.ocks.org/mike/shuffle/compare.html



0
votes
const numbers = [1,2,3,4,5,6,7,8,9,10]
// Returns a random value from a list.
const sampleFromList = list => list[Math.floor(Math.random() * list.length)]

const shuffle = (
  list,
  // Creates an array with every index of the original list.
  availableIndexes = [...list].map((n, i) => i),
  shuffledList = [],
) => {
  // Asks for a random index from the whitelist of available indexes.
  const availableIndex = sampleFromList(availableIndexes)

  // Adds the value of what's in the original list in the random whitelisted index.
  shuffledList = [...shuffledList, list[availableIndex]]
  // Filters out the used index, so is not used again.
  availableIndexes = availableIndexes.filter(n => n !== availableIndex)

  return (
    // If there are available indexes, use a recursive function to continue shuffling. Otherwise return the shuffled list.
    availableIndexes.length
        ? shuffle(list, availableIndexes, shuffledList)
        : shuffledList
  )
}

console.log(shuffle(numbers))

1 commentaires

Désolé l'ami! Je l'ai fait pressé, j'ai ajouté des commentaires, j'espère que vous trouverez utile. Faites-moi savoir si vous avez besoin de clarification quelque part dans le code.