Je dispose d'une liste de tableaux et je dois pouvoir cliquer sur un bouton, puis choisir au hasard une chaîne de caractères dans cette liste et l'afficher dans une boîte de messages.
Comment dois-je m'y prendre ?
Je dispose d'une liste de tableaux et je dois pouvoir cliquer sur un bouton, puis choisir au hasard une chaîne de caractères dans cette liste et l'afficher dans une boîte de messages.
Comment dois-je m'y prendre ?
Créer une instance de Random
classe quelque part. Notez qu'il est très important de ne pas créer une nouvelle instance chaque fois que vous avez besoin d'un nombre aléatoire. Vous devez réutiliser l'ancienne instance pour obtenir une uniformité dans les nombres générés. Vous pouvez avoir une static
quelque part (attention aux problèmes de sécurité des fils) :
static Random rnd = new Random();
Demandez au Random
instance pour vous donner un nombre aléatoire avec le maximum du nombre d'éléments dans la ArrayList
:
int r = rnd.Next(list.Count);
Affichez la chaîne de caractères :
MessageBox.Show((string)list[r]);
J'utilise généralement cette petite collection de méthodes d'extension :
public static class EnumerableExtension
{
public static T PickRandom<T>(this IEnumerable<T> source)
{
return source.PickRandom(1).Single();
}
public static IEnumerable<T> PickRandom<T>(this IEnumerable<T> source, int count)
{
return source.Shuffle().Take(count);
}
public static IEnumerable<T> Shuffle<T>(this IEnumerable<T> source)
{
return source.OrderBy(x => Guid.NewGuid());
}
}
Pour une liste fortement typée, cela vous permettrait d'écrire :
var strings = new List<string>();
var randomString = strings.PickRandom();
Si tout ce que vous avez est une ArrayList, vous pouvez la couler :
var strings = myArrayList.Cast<string>();
Créer un Random
instance :
Random rnd = new Random();
Récupère une chaîne de caractères aléatoire :
string s = arraylist[rnd.Next(arraylist.Length)];
N'oubliez pas, cependant, que si vous effectuez cette opération fréquemment, vous devez réutiliser l'option Random
objet. Mettez-le comme un champ statique dans la classe pour qu'il ne soit initialisé qu'une seule fois et accédez-y ensuite.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.