Tengo una lista del tipo System.IO.FileInfo
, y me gustaría aleatorizar la lista. Pensé que recuerdo haber visto algo así como list.randomize()
hace un tiempo, pero no puedo encontrar dónde pude haber visto eso.¿Existe alguna manera fácil de aleatorizar una lista en VB.NET?
Mi primera incursión en esto me dio con esta función:.
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
lo envío al máximo val quiero que iterar hasta, y una referencia a la lista Quiero el contenido aleatorio en el La variable IMG_COUNT
se coloca más arriba en la secuencia de comandos y designa cuántas imágenes aleatorias quiero mostrar.
Gracias chicos, lo agradezco: D
Recibo un error: "Class 'Randomizer' debe implementar 'Function Compare (x como T, y como T) As Integer' para la interfaz 'System.Collections.Generic.IComparer (of T)'." Este error se obtiene simplemente usando su segundo bloque de código. – Anders
Tenga en cuenta que con la segunda opción, ese método no necesita vivir en una clase separada, y lo usa a través del operador AddressOf como se muestra, en lugar de crear una instancia de clase. –
-1: solo una mala implementación. La función en realidad no aleatoriza nada, porque dos listas que contienen los mismos elementos serán "aleatorizadas" en el mismo orden. Además, nada impide que los elementos secuenciales tengan códigos hash secuenciales. Hay formas mucho mejores de escribir esta función. – Juliet