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()