Zufallszahlen in Python

Run Settings
LanguagePython
Language Version
Run Command
#!/usr/bin/env python3 # coding: utf-8 import random # Durchläufe DURCHLAEUFE = 30 # Runde: Einsatz € RUNDENEINSAETZE = { 1: 1, 2: 2, 3: 3, 4: 5, 5: 8, 6: 12, 7: 18, 8: 27, 9: 41, 10: 62, 11: 93, 12: 140, 13: 210, 14: 315, 15: 473, 16: 710, 17: 1065, 18: 1598, 19: 2397, 20: 3596, 21: 4782, 22: 6360, 23: 8458, 24: 11250, 25: 14962, } # Anzahl Runden bevor die Runde abgebrochen wird MAX_RUNDEN_VOR_RUNDENABBRUCH = 14 DRITTEL = { 1: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, 2: {13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}, 3: {25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36}, } def get_startkapital(): """ Gibt zurück wieviel Startkapital du brauchst """ startkapital = 0 for i in range(MAX_RUNDEN_VOR_RUNDENABBRUCH): startkapital += RUNDENEINSAETZE[i + 1] # Fertig return startkapital def get_gewinnzahl(): """ Gibt die neue Gewinnzahl zurück """ return random.randint(0, 36) def get_gewonnenes_drittel(zahl): """ Gibt das gewonnene Drittel oder 0 zurück """ for i in range(3): if zahl in DRITTEL[i + 1]: return i + 1 return 0 def setze_drittel(gewonnene_drittel): """ Gibt das Drittel zurück das in der neuen Runde gesetz werden soll. Bedingung: Es wurde gewonnen oder noch nicht gespielt. """ # Prüfen ob bereits gesetzt wurde. if not gewonnene_drittel: # Zufallszahl zurück geben return random.randint(1, 3) # Drittel ermitteln moegliche_drittel = [1, 2, 3] for drittel in reversed(gewonnene_drittel): # Letzten beiden Zahlen nie verwenden if drittel in moegliche_drittel: moegliche_drittel.remove(drittel) if len(moegliche_drittel) == 1: return moegliche_drittel[0] def kalkuliere_rundenset(kapital): """ Hauptfunktion """ einsatz = 0 gewonnene_drittel = [] for i in range(MAX_RUNDEN_VOR_RUNDENABBRUCH): runde = i + 1 rundeneinsatz = RUNDENEINSAETZE[runde] einsatz = einsatz + rundeneinsatz # Drittel setzen gesetztes_drittel = setze_drittel(gewonnene_drittel) # Gewinnzahl und Drittel ermitteln gewinnzahl = get_gewinnzahl() gewinndrittel = get_gewonnenes_drittel(gewinnzahl) gewonnene_drittel.append(gewinndrittel) # Ermittel ob gewonnen gewonnen = gesetztes_drittel == gewinndrittel # GEWONNEN if gewonnen: # Gewinn ermitteln gewinn = rundeneinsatz * 3 # print("GEWONNEN") # Fertig kapital = kapital - einsatz + gewinn return kapital else: # Abbruch, weil in keiner Runde gewonnen wurde. # print("Abbruch, weil in keiner Runde gewonnen wurde") # Fertig kapital = kapital - einsatz return kapital def main(): """ Hauptfunktion """ kapital = altes_kapital = startkapital = get_startkapital() for i in range(DURCHLAEUFE): kapital = kalkuliere_rundenset(kapital) print(kapital, kapital - altes_kapital) altes_kapital = kapital print("Startkapital:", startkapital) print("Ergebnis:", kapital - startkapital) print("Kontostand:", startkapital + (kapital - startkapital)) if __name__ == "__main__": main()
Editor Settings
Theme
Key bindings
Full width
Lines