Создайте цикл для повторения всех комбинаций успешных / неудачных событий

#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. Мы понятия не имеем, какова логика для каждого случая. Предположительно, если математика может решить это для одного случая, она вполне может решить это для всех случаев.