Das Pythonprogramm, das ich verwendet habe, um die Gelingenswahrscheinlichkeiten zu bestimmen:
# 
# Zaehlschleife 
# 
def counter(Liste_1): 
    aktuelleListe = [1] * len(Liste_1) 
    last_index = len(Liste_1) - 1 
    while True: 
        yield list(aktuelleListe) 
        i = last_index 
        aktuelleListe[i] += 1 
        while aktuelleListe[i] > Liste_1[i]: 
            aktuelleListe[i] = 1 
            i -= 1 
            if i < 0: 
                raise StopIteration() 
            aktuelleListe[i] += 1


#
#
#
for Wuerfelzahl in range(1,5,1):                # deckt die Wuerfelzahl ab
    AuswDatei = open("Varianzausw05.txt", "a")
    AuswDatei.write("Wuerfelzahl: " + str(Wuerfelzahl) + "\n")
    AuswDatei.close()
    Wuerfelseitenzahl = 20
    Liste_1 = [Wuerfelseitenzahl] * Wuerfelzahl
    for TaW in range(-2,5):                     # deckt die Talentwerte ab
        for Eigenschaftswerte in range(9,16,3): # deckt die Eigenschaftswerte 9, 12, 15 ab
            Eigenschaften = [Eigenschaftswerte] * Wuerfelzahl

            # Zaehler zuruecksetzen:
            GeschaffteProben = 0
            NichtGeschaffteProben = 0
            
            # falls noetig, Liste fuer ueberbehaltene Talentpunkte anlegen:
            if TaW > 0:                             # wenn der Talentwert positiv ist,
                RestlicheTalentpunkte = [0]*((TaW*Wuerfelzahl)+1) # koennen Talentpunkte ueberbleiben
            else:                                   # andernfalls
                RestlicheTalentpunkte = []          # nicht

            # dann wird eine neue Wuerfelkombination geholt und bearbeitet:
            for Probenwurf in counter(Liste_1):
                geschafft = "unbekannt"             # ob die Probe als geschafft gilt, ist noch offen,
                RestTaW = TaW*Wuerfelzahl           # aber der Talentwert steht voll zur Verfuegung

                # jetzt werden die Wuerfel mit den Eingeschaften verglichen:
                Resultatliste = [0] * Wuerfelzahl
                for Wuerfelnummer in range(len(Probenwurf)):
                    Resultatliste[Wuerfelnummer] = Eigenschaften[Wuerfelnummer] - Probenwurf[Wuerfelnummer]

                # und es wird geprueft, ob die Probe geschafft ist
                if RestTaW >= 0:                                # fangen wir mit einem "positiven" TaW an
                    for Einzelresultat in Resultatliste:        # fuer jedes Resultat wird geprueft:
                        if Einzelresultat < 0:                  # muss der Talentwert eingesetzt werden?
                            RestTaW = RestTaW + Einzelresultat  # wenn ja, sinkt er 
                    if RestTaW >= 0:                            # wenn zum Schluss der TaW noch mindestens 0 ist,
                        geschafft = "ja"                        # ist die Probe geschafft
                        if len(RestlicheTalentpunkte) > 0:      # wenn Talentpunkte ueberbleiben koennen: 
                            RestlicheTalentpunkte[RestTaW] = RestlicheTalentpunkte[RestTaW] + 1
                                                            
                    else:                                   # andernfalls
                        geschafft = "nein"                  # eben nicht...

                else:                                       # jetzt kommen die negativen Talentwerte
                    for Einzelresultat in Resultatliste:    # wieder werden die Einzelresultate durchgegangen
                        if Einzelresultat < 0:              # falls eines negativ ist,
                            geschafft = "nein"              # ist die Probe jedenfalls nicht geschafft
                            
                    if geschafft == "unbekannt":            # wenn es noch moeglich ist, die Probe zu bestehen,
                        for Einzelresultat in Resultatliste:            # werden die Einzelresultate durchgegangen
                            RestTaW = RestTaW + Einzelresultat          # und zu dem Talentwert addiert;
                        if RestTaW < 0:                                 # wenn er danach immer noch negativ ist,
                            geschafft = "nein"                          # ist die Probe danebengegangen,
                        else:                                           # andernfalls
                            geschafft = "ja"                            # ist sie geschafft
     
                # Zaehler hochsetzen:
                if geschafft == "ja":
                    GeschaffteProben = GeschaffteProben + 1
                else:
                    NichtGeschaffteProben = NichtGeschaffteProben + 1

            # nach dem Durchgehen aller Wuerfelkombinationen:
            Probenzahl = NichtGeschaffteProben + GeschaffteProben
            if Probenzahl == Wuerfelseitenzahl**Wuerfelzahl:
                pass
            else:
                print "??"
            Prozent_geschafft = int(float(GeschaffteProben)*100/float(Probenzahl))

            # und eine Dateizeile schreiben:
            Einzelauswertung = ["E: ", Eigenschaftswerte, "TaW: ", TaW*Wuerfelzahl, "Probz: ", Probenzahl, "Prozent_geschafft: ", Prozent_geschafft, "Njet: ", NichtGeschaffteProben,
                                "Jep: ", GeschaffteProben, "mit: ", RestlicheTalentpunkte]
            DateiZeile = repr(Einzelauswertung)
            AuswDatei = open("Varianzausw06.txt", "a")
            AuswDatei.write(DateiZeile+"\n")
            AuswDatei.close()