public static List<T> DesordenarLista<T>(List<T> input) { List<T> arr = input; List<T> arrDes = new List<T>(); Random randNum = new Random(); while (arr.Count > 0) { int val = randNum.Next(0, arr.Count - 1); arrDes.Add(arr[val]); arr.RemoveAt(val); } return arrDes; }
Muchas gracias, justo necesitaba esto.
Gracias, me evitaste un rato de desarrollo, jejeje, sencilla, concreta y funcional, excelente
Gracias , muy bueno
oye, es espectacular tu algoritmo! Es de genio! Gracias.
Es muy bueno, pero creo que habría que quitar el -1, ya que si lo dejas, el ultimo elemento de la lista nunca se re ordena.
Saludos.
El algoritmo esta correcto, por si no lo sabes genio, se usa count -1 porque los arrays inician con elemento 0. un Array con 5 elementos tendría solo posiciones del 0 al 4 por ejemplo. Espero que haya quedado claro.
Saludos
Sí tienes razón, la función Random NO INCLUYE EL ULTIMO VALOR DEL RANGO INGRESADO. Por ejemplo si van a buscar aleatoriamente una posición de una lista que almacena números entre 1 y 16 el rango debe ser rand.Next(0,lista.Count) | lista.Count es 16 |
por lo tanto no es necesario restarle esa unidad, sabiendo que el número 1 se encuentra en la ubicación 0 y el 16 en la ubicación 15 de la lista.
sinceramente este es un metodo que necesito, pero no se como implementarlo