Maison > interface Web > js tutoriel > le corps du texte

Comment puis-je sélectionner efficacement des éléments de tableau aléatoire sans répétitions ?

Patricia Arquette
Libérer: 2024-10-31 04:47:30
original
324 Les gens l'ont consulté

How Can I Efficiently Select Random Array Items Without Repeats?

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!