Quelle est la meilleure façon de récupérer n éléments d'un IEnumerable <T> dans un ordre aléatoire? J'écris une API de magasin et j'ai besoin de fournir un petit ensemble d'éléments aléatoires à partir d'une énumération parfois énorme d'éléments. L'énumérable sous-jacent est parfois un tableau, et parfois un filtre évalué paresseux dudit tableau. Comme je ne fais que saisir un nombre proportionnellement faible d'éléments des énumérations, il est préférable d'utiliser une sorte d'index aléatoire répété dans l'énumération et la vérification de dupe à chaque fois plutôt que de trier aléatoirement la liste entière en utilisant un algorithme existant et saisir le haut x, non?Quelle est la meilleure façon d'extraire efficacement un petit sous-ensemble aléatoire d'une grande énumérable?
De meilleures idées?
Comme le dit le PO, vous devez également vous assurer que vous n'obtenez pas le même élément deux fois. –
C'est assez trivial, je pense. Étant donné que seul un petit nombre d'éléments est sélectionné, vous pouvez tester si vous avez déjà vu ce nombre aléatoire particulier et en choisir un autre (ou simplement prendre le premier non choisi de cette position). –