Comment accéder élément de hasard dans la liste?
J'ai une liste de tableaux, et j'ai besoin d'être en mesure de cliquer sur un bouton puis choisir au hasard une chaîne de la liste et l'afficher dans une messagebox.
Comment pourrais-je aller sur le faire?
Vous devez vous connecter pour publier un commentaire.
Créer une instance de
Random
classe quelque part. Notez qu'il est assez important de ne pas créer une nouvelle instance à chaque fois vous avez besoin d'un nombre aléatoire. Vous devez réutiliser l'ancienne instance pour assurer l'uniformité dans les nombres générés. Vous pouvez avoir unstatic
champ quelque part (attention sur fil des questions de sécurité):Demander à la
Random
exemple pour vous donner un nombre aléatoire avec le maximum du nombre d'éléments dans laArrayList
:Affichage de la chaîne:
Next(max)
appel est exclusif.J'ai l'habitude de l'utilisation de ce petit recueil de méthodes d'extension:
Pour un typage fort la liste, ce serait vous permettent d'écrire:
Si tout ce que vous avez est une liste de tableaux, vous pouvez le convertir:
return list[rnd.Next(list.Count)];
Random
dans l'état statique à la place.Que vous pouvez faire:
Créer un
Random
exemple:Récupérer une chaîne de caractères aléatoires:
N'oubliez pas, cependant, que si vous le faites souvent, vous devriez utiliser de nouveau le
Random
objet. Le mettre comme un champ statique de la classe de sorte qu'il est initialisé qu'une seule fois et ensuite y accéder.Ou simple extension de la classe comme ceci:
Puis il suffit d'appeler:
Fonctionne pour les tableaux.
Je voudrais éviter d'appeler
OrderBy()
comme il peut être coûteux pour les plus grandes collections. Utiliser les collections indexées commeList<T>
ou des tableaux à cet effet.IList
de sorte que la seconde surcharge inutile.Pourquoi pas:
maxValue
paramètre de la méthodeNext
devrait être juste un certain nombre d'éléments dans une liste, pas moins un, parce que, d'après une documentation "maxValue est le exclusif à la limite supérieure du nombre aléatoire".J'avais besoin de l'élément de plus au lieu d'un seul. Donc, j'ai écrit ceci:
Avec cela, vous pouvez obtenir des éléments de combien tu veux comme au hasard comme ceci:
J'ai été en utilisant cette ExtensionMethod pendant un certain temps:
Pourquoi ne pas[2]: