Visual Basic - RURI Ayudame

Life is soft - evento anual de software empresarial
 
Vista:

RURI Ayudame

Publicado por Jose Francisco (34 intervenciones) el 23/10/2004 22:19:51


Puedes checar tu correo RURI... Lo que pasa es que ya hice el problema, pero me di cuenta, de que al realizarlo yo estoy sacando la probabilidad de una x determinada ( X=40).... Pero lo que yo quiero es saber cuantos pasaron y cuantos no???..... Lo que yo supuse es sacar probabilidad de exito y multiplicarla por X = 40, y pues es correcto... Lo inocorrecto es que no estoy utilizando la Distribucion Geometrica, no se si me podrias ayudar con eso, perdon por las molestias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:RURI Ayudame

Publicado por Ruri (583 intervenciones) el 24/10/2004 01:07:50
Reconsideremos tu problama. Para noliarte más utilicemos una distribución binomial:

P(X=x)=C(m,x)*p^x*(1-p)^(n-x)

Vos no podés saber cuantos alumnos van a aprobar entre 40, lo que si sabemos podemos calcular es la probabilidad de aprobación de 0, 1, 2, 3 ..., 40. Otra cosa que sabemos es que la esperanza representa el valor más problable en todo el conjunto ¿Te estarán pidiendo que calcules la esperanza? Bueno, como sea. Lo que podemos hacer es crear un programa que calcule el conjunto de probabilidades a partir de la población y las condiciones que afectan a nuestra probabilidad.

Continúa en el próximo mensaje
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:RURI Ayudame

Publicado por Ruri (583 intervenciones) el 24/10/2004 01:10:59
No sé porqué estoy viendo el mensaje anterior fuera de lugar. Te lo vuelvo a repetir:
... Con los datos que me diste, y según como lo interpreto, yo lo haría de esta manera:

Option Explicit
DefLng A-Z

Private p As Single, n As Long

Private Sub Command1_Click()
Dim k As Long, p1 As Single, p2 As Single, e As Single
n = Val(txtPoblacion)
p = ProbabilidadTotal
txtResultados.Text = ""
For k = 0 To n
p1 = CalcularProbabilidadDeLaMuestra(k)
p2 = p2 + p1
txtResultados.Text = txtResultados.Text & "La probabilidad de que apruebe " & k & " individuos es: " & p1 & vbCrLf
txtResultados.Text = txtResultados.Text & "La probabilidad acumulada sobre " & k & " individuos es: " & p2 & vbCrLf & vbCrLf
Next k
e = CalcularEsperanza
txtResultados.Text = txtResultados.Text & vbCrLf & vbCrLf & vbCrLf & "La esperanza es: " & e
End Sub

Private Sub Form_Load()
With cboHumor 'ComboBox
.AddItem "Bueno"
.AddItem "Regular"
.AddItem "Malo"
.ListIndex = 0
End With
With cboSupervision 'ComboBox
.AddItem "Con supervisión"
.AddItem "Sin supervisión"
.ListIndex = 0
End With
With cboClima 'ComboBox
.AddItem "Bueno"
.AddItem "Regular"
.AddItem "Malo"
.ListIndex = 0
End With
txtPoblacion.Text = 40 'Cuadro de texto
txtResultados = "" 'Cuadro de texto
End Sub

Private Function ProbHumor(ByVal Indice As Long) As Double
ProbHumor = Switch(Indice = 0, 0.8, Indice = 1, 0.6, Indice = 2, 0.4, Indice < 0, 1)
End Function

Private Function ProbSupervision(ByVal Indice As Long) As Double
ProbSupervision = Switch(Indice = 0, 1, Indice = 1, 0.5, Indice < 0, 1)
End Function

Private Function ProbClima(ByVal Indice As Long) As Double
ProbClima = Switch(Indice = 0, 0.8, Indice = 1, 0.5, Indice = 2, 0.3, Indice < 0, 1)
End Function

Private Function ProbabilidadTotal() As Double
ProbabilidadTotal = ProbHumor(cboHumor.ListIndex) * ProbSupervision(Me.cboSupervision.ListIndex) * ProbClima(cboClima.ListIndex)
End Function

Private Function CalcularEsperanza() As Double
CalcularEsperanza = Val(txtPoblacion.Text) * ProbabilidadTotal
End Function

Private Function CalcularProbabilidadDeLaMuestra(ByVal x As Long) As Double
CalcularProbabilidadDeLaMuestra = CalcularCombinaciones(n, x) * (p ^ x) * ((1 - p) ^ (n - x))
End Function

Private Function Factorial(ByVal n As Long) As Double
Dim k As Double, f As Double
f = 1
If n < 2 Then
Factorial = 1
Else
For k = 2 To n
f = f * k
Next k
Factorial = f
End If
End Function

Private Function CalcularCombinaciones(ByVal n As Long, ByVal k As Long) As Double
CalcularCombinaciones = Factorial(n) / (Factorial(k) * Factorial(n - k))
End Function

Continúa en el próximo mensaje...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:RURI Ayudame

Publicado por Ruri (583 intervenciones) el 24/10/2004 01:20:26
Está claro que las condiciones sobre las que varían las probabiidades habría que poder tomarlas de otro lado, por ejemplo desde una base de datos o algo así. De lo contrario el programa no tendría sentido. Además podrías colocar unos linos botones de opción que te permitan calcular la probabilidad por otros medios como la formula HiperGeométrica, Poisson,etc. Si es que esto estaba en la consigna. También podrías crear unos lindos gráficos que muestren la distribución de la probabilidad. Antes que me olvide,,la probabilidad de que aprueben 3 no es la misma que la acumulada de 3, en el primer caso la probabilidad se obtiene calculando la probabilidad para 3, mientras que en el segundo es P(X=0) + P(X=1) + P(X=2) + P(X=3). La probabilidad acumulada no puede superar 1 ni ser inferioror a 0.

Bien, no soy un experto en probabilidad ni mucho menos, así que no sé si te estoy orientando bien. Vos tenés las consignas y sabés que te estan pidiendo con exactitud. Además debés tener más frescos los conceptos de probabilidad que yo. sólo es cuestion de juntar las cosas. Revisá bien todolo que te mandé y fijate si se adapta a lo que te piden. Revisá bien las fórmulas, no te olvides que las hice en un rato y apenas las probé.

Espero haber sido útil
Saludos Ruri
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar