Ver Mensaje Individual
  #8 (permalink)  
Antiguo 18/07/2008, 05:27
Avatar de Txoco
Txoco
 
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 15 años, 10 meses
Puntos: 7
Respuesta: Calcular mediana

La función "MEDIANA()" de Excel sí se refiere a la mediana estadística, que parece que sí es lo que estás buscando. Lo que pasa es que la mediana es un cálculo complejo que depende de si el número de valores en la serie es par o impar.

Si sólo vas a trabajar con series de tres valores, no se hasta qué punto es aconsejable ordenarlos para seguir el algoritmo de la mediana... casi es más gasto de procesador que si los comparas a palo seco. Esto que te propongo es una estrategia de programación que se llama "loop unrolling" (algo así como "desenrrollar bucles"), que sirve para optimizar puntos críticos de velocidad, porque las estructuras de bucle son más pesadas que las comparaciones.

Hasta donde yo se, VB no tiene funciones estadísticas de forma nativa, así que este código que te sugiero te sirve única y exclusivamente para tres valores. Para cuatro se complica, pero puede hacerse. Para cinco probablemente el gasto empiece a dejar de ser comparable con el de los bucles. Y si el número de valores puede variar, esta función no te sirve en absoluto:

Código:
Public Function ValorMedio(ByVal a As Long, ByVal b As Long, ByVal c As Long) As Long
    If a > b Then
        If a > c Then
            If b > c Then
                ValorMedio = b
            Else
                ValorMedio = c
            End If
        Else
            ValorMedio = a
        End If
    Else
        If a > c Then
            ValorMedio = a
        Else
            If b > c Then
                ValorMedio = c
            Else
                ValorMedio = b
            End If
        End If
    End If
End Function
Eso sí, que no se te ocurra presentar algo así en un trabajo académico... por lo general a los profesores no les gustan estas cosas aunque sí se hagan al optimizar los proyectos
__________________
wile sona li mute e sona