Quería saber si hay alguna función sencilla para calcular la mediana de tres números, en donde cogería tres datos y me quedaría siempre con el del medio.
gracias.
| ||||
![]() No entendí muy bien, supongo que quieres saber cuál de los 3 valores está en el medio. Solo usa varios If usando los comparadores (menor) < (mayor), (mayor) > (menor), (igual) = (igual) y obtendrás el resultado.
__________________ Por favor, antes de preguntar, revisa la Guía para realizar preguntas. |
| ||||
![]() Sí, al principio eso se me ocurrió Jhonnyf. Pero si te fijas en el mensaje, dice: Cita: Lo cual me confundió... en donde cogería tres datos y me quedaría siempre con el del medio
__________________ Por favor, antes de preguntar, revisa la Guía para realizar preguntas. |
| ||||
![]() Hola! ¿Tal vez te refieres a la mediana estadística, y no a la media aritmética? La mediana es un poco compleja de explicar, y me gustaría tener un ratito para implementar un ejemplo, pero no se si tiene sentido para sólo tres valores... sólo me se la teoría, y tampoco estoy muy ducho, la verdad ![]() ¿O tal vez te refieres a devolver, de tres valores, el que no es el mayor ni el menor? Por ejemplo, de la serie (5, 15, 20), quedarte con el 15 y de (150, 2, 10), quedarte con el 10. Última edición por Txoco; 18/07/2008 a las 04:53 Razón: "quedarte con el 150... =/" |
| |||
Respuesta: Calcular mediana Gracias por vuestras respuestas. No estoy muy puesto en estadística y no se si sería la mediana estadística o aritmética. En mi programa, tengo que obtener un datos que sería la temperatura de varios sensores de temperatura, pero el problema es que a veces hay un error de lectura que está un poco desfasado y quería corregirlo en el código. Yo lo que quiero es hacer tres lecturas y quedarme con dato que tenga el valor medio. No sería hacer la media de esos datos. Ej: (25,5,26) -> Cogería 25 (5,26,22) -> 22 (22,24,28) ->24 Sería ordenarlos y elegir el valor medio. En excell hay una funcion que es =MEDIANA(valores) y no se si en visual hay algo similar. Muchas gracias. |
| ||||
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:
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 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 ![]()
__________________ wile sona li mute e sona |
| ||||
Respuesta: Calcular mediana Aqui un Algoritmo haciendo lo que pides (Ordenar y sacar el Valor intermedio) usando el Algoritmo Burbuja
Código:
Private Function ValorIntermedio(a As Long, b As Long, c As Long) As Long Dim i As Integer, j As Integer Dim Ordenado(3) As Long 'le dos 1 más para que sirva como temporal 'asiganamos los valores dador Ordenado(0) = a Ordenado(1) = b Ordenado(2) = c 'Hacemos el Algoritmo de Ordenamiento Burbuja For i = 0 To 2 For j = i + 1 To 2 If Ordenado(i) > Ordenado(j) Then Ordenado(3) = Ordenado(j) Ordenado(j) = Ordenado(i) Ordenado(i) = Ordenado(3) End If Next Next 'Devolvemos el valor intermedio, en este caso el Index 1 ValorIntermedio = Ordenado(1) End Function
__________________ *en construccion* Última edición por Jhonnyf; 18/07/2008 a las 08:14 |
| |||
Respuesta: Calcular mediana Ok, muchas gracias por las respuestas. Necesito recoger 18 datos, y en cada dato hacer tres muestras. Probaré con estos códigos a ver como me va el programa, pq lo usaré en un portátil muy viejo. gracias. |