J'ai une liste de type System.IO.FileInfo
, et je voudrais randomiser la liste. Je pensais me souvenir d'avoir vu quelque chose comme list.randomize()
un peu plus tôt mais je ne peux pas trouver où j'ai pu voir ça.Existe-t-il un moyen facile de randomiser une liste dans VB.NET?
Ma première incursion dans ce qui m'a donné cette fonction.
Private Shared Sub GetRandom(ByVal oMax As Integer, ByRef currentVals As List(Of Integer))
Dim oRand As New Random(Now.Millisecond)
Dim oTemp As Integer = -1
Do Until currentVals.Count = IMG_COUNT
oTemp = oRand.Next(1, oMax)
If Not currentVals.Contains(oTemp) Then currentVals.Add(oTemp)
Loop
End Sub
je l'envoyer au maximum val Je veux qu'il itérer jusqu'à, et une référence à la liste Je veux que le contenu aléatoire dans la La variable IMG_COUNT
est placée plus loin dans le script, indiquant le nombre d'images aléatoires que je veux afficher.
Merci les gars, je l'apprécie: D
Je continue d'obtenir une erreur: "Randomizer" de classe doit mettre en œuvre 'Function Compare (x comme T, y comme T) comme Integer' pour l'interface 'System.Collections.Generic.IComparer (of T)'. " Cette erreur est obtenue juste en utilisant votre deuxième bloc de code. – Anders
Notez qu'avec la deuxième option, cette méthode n'a pas besoin de vivre dans une classe séparée, et vous l'utilisez via l'opérateur AddressOf comme indiqué, plutôt que de créer une instance de classe. –
-1: Juste une mauvaise implémentation. La fonction ne randomise réellement rien, car deux listes contenant les mêmes éléments seront "randomisées" dans le même ordre. En outre, rien n'empêche les éléments séquentiels d'avoir des hashcodes séquentiels. Il existe de bien meilleurs moyens d'écrire cette fonction. – Juliet