#vba
#vba
Вопрос:
Я пишу код, который вычисляет вероятность при определенном количестве успехов. У меня возникли проблемы с написанием цикла for, чтобы я мог классифицировать некоторые события как сбои, а некоторые — как успехи. Я смог сделать это для Case Is = 1, но я не думаю о каком-либо умном способе повторить другие случаи таким образом, чтобы пройти через все комбинации успехов и неудач, учитывая количество успехов, которые вводит пользователь.
Я предпринял попытку для Case= 2, но не могу придумать способ записи сбоев. В случае = 1 я обошел это с помощью модуля.
Function CustomBinomial(MoveType, SuccessAmount) As Double
'Variables to record which events succeed and fail
Dim FirstEvent As Double
Dim SecondEvent As Double
Dim ThirdEvent As Double
Dim FourthEvent As Double
Dim FifthEvent As Double
Dim SixthEvent As Double
'Rows the probability values are in
ProbSuccessArray = Array(15, 19, 23, 27, 31, 35)
Select Case SuccessAmount
Case Is = 0
'Record 0 events as successful
Case Is = 1
For i = 0 To 5
'Record 1 event as successful
FirstEvent = ProbSuccessArray(i)
'Record 5 events as failures
SecondEvent = ProbSuccessArray((i 1) Mod 6)
ThirdEvent = ProbSuccessArray((i 2) Mod 6)
FourthEvent = ProbSuccessArray((i 3) Mod 6)
FifthEvent = ProbSuccessArray((i 4) Mod 6)
SixthEvent = ProbSuccessArray((i 5) Mod 6)
CustomBinomial = CustomBinomial Cells(FirstEvent, 3).Value * (1 - Cells(SecondEvent, 3).Value) _
* (1 - Cells(ThirdEvent, 3).Value) * (1 - Cells(FourthEvent, 3).Value) _
* (1 - Cells(FifthEvent, 3).Value) * (1 - Cells(SixthEvent, 3).Value)
Next i
Case Is = 2
For i = 0 To 5
For j = 1 To 5
'Record 2 events as successful
If i = j Then GoTo Continue
FirstEvent = ProbSuccessArray(i)
SecondEvent = ProbSuccessArray(j)
'Record 4 events as failures
'code here
'CustomBinomial = CustomBinomial Successes * Failures
Continue:
Next j
Next i
Case Is = 3
'Record 3 events as successful
Case Is = 4
'Record 4 events as successful
Case Is = 5
'Record 5 events as successful
Case Is = 6
'Record 6 events as successful
End Select
Комментарии:
1. Ваш текущий вопрос — gobbledegook. Не могли бы вы уточнить, что вы подразумеваете под событием (событие — это слово с очень специфическим значением в VBA), что такое успех, а что такое сбой и т. Д
2. Мы понятия не имеем, какова логика для каждого случая. Предположительно, если математика может решить это для одного случая, она вполне может решить это для всех случаев.