Ho una lista di tipo System.IO.FileInfo
, e vorrei randomizzare la lista. Ho pensato di ricordare di aver visto qualcosa come list.randomize()
un po 'di tempo fa ma non riesco a trovare dove possa averlo visto.Esiste un modo semplice per randomizzare un elenco in VB.NET?
La mia prima incursione in questo mi ha dato con questa funzione:.
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
ho inviarlo al massimo val voglio che iterare fino a, e un riferimento alla lista che voglio il contenuto randomizzato in The la variabile IMG_COUNT
è impostata più in alto nello script, che indica quante immagini casuali voglio visualizzare.
Grazie ragazzi, lo apprezzo: D
Continuo a ricevere un errore: "Class 'Randomizer' deve implementare 'Function Compare (x come T, y as T) As Integer' per l'interfaccia 'System.Collections.Generic.IComparer (di T)'." Questo errore si ottiene semplicemente usando il tuo secondo blocco di codice. – Anders
Si noti che con la seconda opzione il metodo non ha bisogno di vivere in una classe separata e lo si utilizza tramite l'operatore AddressOf come mostrato, piuttosto che creando un'istanza di classe. –
-1: solo una cattiva implementazione. La funzione in realtà non randomizza nulla, perché due liste contenenti gli stessi elementi saranno "randomizzate" nello stesso ordine. Inoltre, nulla impedisce che gli articoli sequenziali abbiano hashcode sequenziali. Ci sono modi molto migliori per scrivere questa funzione. – Juliet