Python 3 Türen Spiel programmieren?

1 Antwort

Für den Kern der Simulation hätt ich das hier:

import random

PREIS=1
NIETE=0

def simulation(wechseln = False):
    #Türen initialisieren
    tueren = [PREIS, NIETE, NIETE]
    #Türen durchmischen
    random.shuffle(tueren)
    #Eine Türposition wählen
    wahl = random.randint(0,2)
    #Türpositionen auflisten und die gewählte Türposition entfernen
    rest = [0,1,2]
    rest.remove(wahl)
    #Falls die Tür mit dem Preis nicht die gewählte ist, wird sie jetzt aus der Restmenge entfernt
    if tueren[wahl] != PREIS: rest.remove(tueren.index(PREIS))
    #Der Moderator wählt eine der Türen aus der Menge der Türen, die weder vom Kanidaten gewählt wurden, noch den Preis verbergen und öffnet diese
    oeffnen = random.choice(rest)
    rest.remove(oeffnen)
    #Zur Restmenge der Türen wird jetzt die mit dem Preis wieder hinzugefügt
    rest.append(tueren.index(PREIS))
    #Falls der Kanidat die Tür wechselt, bleibt jetzt nur noch die erste der übrigen Türen übrig
    if wechseln: wahl = rest[0]
    #Rückgabe eines bool-Wertes, der besagt, ob die am Ende gewählte Tür die mit dem Preis ist oder eben nicht
    return tueren[wahl] == PREIS

Für n Simulationen einfach n-mal durchlaufen lassen und am Ende zählen, wie Oft True bzw. False zurückgegeben wurde.

Anwendungsbeispiel:

anzahl = 100

gewonnen = sum([int(simulation(True)) for i in range(anzahl)])
print('Mit Türwechsel: {0}/{1}'.format(gewonnen, anzahl))

gewonnen = sum([int(simulation(False)) for i in range(anzahl)])
print('Ohne Türwechsel: {0}/{1}'.format(gewonnen, anzahl))