6
votes

Comment puis-je obtenir une chaîne aléatoire dans une liste et l'affecter à une variable

Ma liste est définie comme suit:

string currName = someFunctionOf (firstNames);

c#

1 commentaires

Points bonus - Faites une méthode d'extension pour faire cela!


3 Réponses :


14
votes

quelque chose comme ça? XXX


1 commentaires

Nope, le numéro retourné est moins que l'argument. msdn.microsoft.com/en-us/library/zd1bc8e5.aspx



8
votes

Essayez ceci xxx


2 commentaires

Il devrait être int arandompos = randnum.next (prénoms.Count - 1); Sinon, vous pourriez obtenir une exception hors de portée lorsque le nombre aléatoire choisit la valeur maximale.


@JEBLI qui n'est pas correct - il renvoie un nombre aléatoire moins que le maximum. Donc randnum.next (prénomes.count); fonctionne comme prévu.



20
votes

Voici une approche différente de celle des trois postes, juste pour une variété et un peu de plaisir avec LINQ:

string aName = firstNames.OrderBy(s => Guid.NewGuid()).First();


3 commentaires

-1 pour l'obscurité, +1 pour l'intelligence et +1 pour appliquer des astuces SQL.


Je mentionnerais peut-être que cette approche est difficile à lire, lente et ne doit pas être utilisée dans le code réel.


@Eds mais amusant et assez intelligent