Comment sélectionner efficacement et aléatoirement un élément d'un tableau sans répétitions
Votre code crée un tableau de choix récents pour éviter les répétitions et appelle une fonction récursive nommé ChooseName() lorsqu'un élément sélectionné figure dans les choix récents. Cette approche garantit l'unicité mais peut conduire à une boucle infinie si la taille du tableau est limitée.
Est-ce une fonction récursive ?
Oui, ChooseName() s'appelle à retrouvez une sélection unique. La récursivité permet à la fonction de parcourir les éléments du tableau jusqu'à ce qu'elle en trouve un qui ne figure pas dans les choix récents.
Amélioration de l'efficacité
Pour éviter les boucles infinies, envisagez une approche alternative suggéré dans la réponse :
<code class="javascript">function randomNoRepeats(array) { var copy = array.slice(0); return function() { if (copy.length < 1) { copy = array.slice(0); } var index = Math.floor(Math.random() * copy.length); var item = copy[index]; copy.splice(index, 1); return item; }; }</code>
Cette fonction génère une copie du tableau d'origine et en choisit au hasard un élément. Une fois que tous les éléments sont utilisés, il crée une nouvelle copie du tableau d'origine, garantissant des sélections uniques même lorsque le tableau est épuisé.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!