Visual Basic - RE:RURI Ayudame

Life is soft - evento anual de software empresarial
 
Vista:

RE:RURI Ayudame

Publicado por Ruri (583 intervenciones) el 24/10/2004 01:09:14
... 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 pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder