from random import randrange import matplotlib.pyplot as plt import numpy as np print() print("Roulette-Simulation") print() while True: eingabe = input("Anzahl der Spielrunden: ") try: n = int(eingabe) if n <= 0: print("Bitte eine POSITIVE natürliche Zahl eingeben.") continue break except ValueError: print("Bitte eine NATÜRLICHE Zahl eingeben.") liste_der_ergebnisse = [randrange(37) for i in range(n)] # Als Rot werden die 18 Zahlen von 0 bis 17 interpretiert; # als Schwarz werden die 19 Zahlen von 18 bis 36 interpretiert. liste_rot_schwarz = [1 if x <= 17 else 0 for x in liste_der_ergebnisse] # Folgendes wohl nicht gerade zeitoptimiert... liste_der_mittelwerte = [sum(liste_rot_schwarz[:i])/i for i in range(1, n+1)] print() print(f"Liste der Farb-Ergebnisse (1 für Rot, 0 für Schwarz oder Null): {liste_rot_schwarz}\n") print(f"Liste der Mittelwerte: {liste_der_mittelwerte}\n") print(f"Mittelwert aller {n} Spielrunden: {liste_der_mittelwerte[-1]}\n") p_rot = 18/37 plt.title(f"""Roulette-Simulation {n} Spielrunden ermittelte Häufigkeit von Rot: {liste_der_mittelwerte[-1]} theoretische Häufigkeit von Rot: {p_rot}""") plt.xlabel("Anzahl der Spielrunden") plt.ylabel("Häufigkeit") axis = plt.gca() axis.set_ylim([0, 1]) plt.yticks([i * 0.1 for i in range(11)]) plt.plot([0, n-1], [p_rot, p_rot], color='black') if n <= 100: plt.plot(liste_der_mittelwerte, color="blue", marker = "o", ms = 4, mfc = "red") elif n <= 200: plt.plot(liste_der_mittelwerte, color="blue", marker = "o", ms = 2, mfc = "red") else: plt.plot(liste_der_mittelwerte, color = "blue") plt.show()