from random import randrange import matplotlib.pyplot as plt import numpy as np print() print("Simulation einer Münze") print() while True: eingabe = input("Anzahl der Münzwürfe: ") 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_wuerfe = [randrange(2) for i in range(n)] # Folgendes wohl nicht gerade zeitoptimiert... liste_der_mittelwerte = [sum(liste_der_wuerfe[:i])/i for i in range(1, n+1)] print() print(f"Liste der Wurfergebnisse: {liste_der_wuerfe}\n") print(f"Liste der Mittelwerte: {liste_der_mittelwerte}\n") print(f"Mittelwert aller {n} Würfe: {liste_der_mittelwerte[-1]}\n") plt.title(f"Simulation einer Münze\nMittelwert bei {n} Würfen: {liste_der_mittelwerte[-1]}") plt.xlabel("Anzahl der Münzwürfe") plt.ylabel("Mittelwert") axis = plt.gca() axis.set_ylim([0, 1]) plt.yticks([i * 0.1 for i in range(11)]) plt.plot([0, n-1], [0.5, 0.5], 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()