Ver Mensaje Individual
  #19 (permalink)  
Antiguo 21/12/2013, 16:36
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Moda y mediana en PHP

Solamente puse el caso para una lista impar porque era la que Miriam indicó, en el caso de listas pares, debes sumar los valores de los dos elementos centrales y luego divides dicho resultado entre dos. En el ejemplo, eso sería (($alumnos[$posMediana] + $alumnos[$posMediana - 1]) / 2) - 1. Como no hay posiciones en decimales, se toma el entero más cercano.

Dicho esto y actualizando el algoritmo, quedaría así:

Código PHP:
Ver original
  1. $alumnos = array();  
  2. for ($i = 0; $i < 9; $i++) $alumnos[] = mt_rand(1, 7);
  3. sort($alumnos);
  4. echo "Datos: " . implode(", ", $alumnos) . "\r\n";
  5.  
  6. $cantidad = count($alumnos);
  7. $posMediana = ($cantidad + 1) / 2;
  8. echo "Mediana: " . $cantidad % 2 != 0 ? $alumnos[$posMediana - 1] : (($alumnos[$posMediana - 1] + $alumnos[$posMediana]) / 2) - 1;

Como consejo, es mejor que, cuando trabajes con arrays, los hagas empezando desde la posición cero, como naturalmente es.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 21/12/2013 a las 16:42