Desordenar aleatoriamente una lista de elementos en C#

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;
}

5 comentarios en “Desordenar aleatoriamente una lista de elementos en C#

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

Responder a Azael Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.