0
votes

Alternative à la méthode aléatoire.Next

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?

En d'autres termes, je veux quelque chose comme aléatoire (). Suivant (1, 3, 4, 6, 7) où il sélectionnera un nombre aléatoire à partir de ces numéros (la sélection de 2 n'est donc pas une option)

J'ai regardé ici , mais ne peut pas semble trouver quoi que ce soit.


1 commentaires

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)) / Myarray (aléatoire] .next (0, myarray.length)) .


3 Réponses :


0
votes

Essayez ce qui suit: xxx

Plus d'infos et exemples ici

Exemple de travail du code ICI

J'espère que cela aide.


0 commentaires

0
votes

Définissez votre liste sous forme de tableau: xxx pré>

puis utilisez le standard Random.Next pour générer un index pour le tableau: P>

Dim randNumber as Integer
randNumber = List(index)


1 commentaires

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 ...



0
votes

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


0 commentaires