¿Cómo encontrar el modo de una matriz en C#?

Sé que hay muchos hilos de esta pregunta, pero ninguno de ellos me ha ayudado de la manera que quería.

Así que aquí está mi problema: tengo esta matriz:

int [] array = {1, 1, 1, 2, 2, 4} 

Quiero mostrar el modo de esa matriz, pero cuando lo hago, muestra tres 1 y un 2 y debería ser un 1 y un 2, quiero guardar los 2 números (1 y 2) en un ListBox y el numero 4 en otro ListBox.

Encontré este código pero no lo entendí completamente. No sé usar un diccionario y no puedo usarlo porque no sé cómo funciona:

int[] numsArr = { 1, 1, 1, 2, 2, 3, 4, 5, 6 };
Dictionary<int, int> dic = new Dictionary<int, int>();
for (int i = 0; i < numsArr.Length; i++)
    if (dic.ContainsKey(numsArr[i]))
        dic[numsArr[i]] = ++dic[numsArr[i]];
    else
        dic.Add(numsArr[i], 1);

StringBuilder sb = new StringBuilder();
foreach (KeyValuePair<int, int> kvp in dic)
    sb.AppendLine(String.Format("Number {0} has {1} repetitions.", kvp.Key, kvp.Value));
Console.WriteLine(sb.ToString());
Console.ReadLine();

preguntado el 16 de septiembre de 13 a las 00:09

Creo que entendí lo que escribiste, pero sé más claro sobre el resultado real y esperado. -

Estoy confundido porque (tal como lo entiendo) el modo es el valor único que aparece con mayor frecuencia en un conjunto de datos, pero usted describe el resultado como dos números. -

1 Respuestas

int[] numsArr = { 1, 1, 1, 2, 2, 3, 4, 5, 6 };

var numberGroups = numsArr.GroupBy(num => num);
var mostCommonGroups = numberGroups.Where(grp => grp.Count() == numberGroups.Max(group => group.Count()));

var mostCommonValues = mostCommonGroup.Select(mostCommonGroups.Key);

Los valores más comunes son sus modos.

Respondido el 16 de Septiembre de 13 a las 04:09

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.