dans Visual Basic, existe-t-il une méthode qui me permettra de sélectionner un nombre aléatoire dans une liste de numéros plutôt que de sélectionner un nombre aléatoire entre deux chiffres? P>
En d'autres termes, je veux quelque chose comme J'ai regardé ici , mais ne peut pas semble trouver quoi que ce soit. p> aléatoire (). Suivant (1, 3, 4, 6, 7) code> où il sélectionnera un nombre aléatoire à partir de ces numéros (la sélection de 2 n'est donc pas une option) p>
3 Réponses :
Définissez votre liste sous forme de tableau: puis utilisez le standard Random.Next pour générer un index pour le tableau: P> Dim randNumber as Integer
randNumber = List(index)
Lisez la documentation de Suivant ici Le maxvalue est exclusif, cela signifie qu'il est exclu du numéro résultant de sorte que la ligne de votre code" index = generator.next (0, liste.length - 1) "est faux parce qu'il va Ne retournez jamais le dernier numéro dans le tableau ...
Si vous souhaitez que chaque valeur dans votre liste ne soit qu'une seule fois, il suffit de mélanger votre liste.
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim lst As New List(Of Integer) From {1, 3, 4, 6, 7} Dim shuffledList As List(Of Integer) = lst.OrderBy(Function(i) Rnd.Next()).ToList() For Each i In shuffledList Debug.Print(i.ToString) Next End Sub
Mettez ces numéros dans une liste / tableau et choisissez un index aléatoire dans les index de liste / tableau:
Dim i en tant qu'integer = myList ([Random] .next (0, myList.count)) code> /
Myarray (aléatoire] .next (0, myarray.length)) code>.