From 6778723083cfb850f9fc8cd7402b3fb33ac06128 Mon Sep 17 00:00:00 2001 From: mantaru Date: Tue, 10 Sep 2024 22:28:59 +0200 Subject: [PATCH] add chatgpt version --- main_chatgpt.py | 100 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 main_chatgpt.py diff --git a/main_chatgpt.py b/main_chatgpt.py new file mode 100644 index 0000000..4729217 --- /dev/null +++ b/main_chatgpt.py @@ -0,0 +1,100 @@ +import random +import time + + +def ziehung(): + """Simuliert eine Lottoziehung und gibt die gezogenen Zahlen zurück.""" + return sorted(random.sample(range(1, 50), 6)) + + +def nutzer_tipp(): + """Fragt den Nutzer nach seinem Tipp und gibt die Zahlen als Liste zurück.""" + while True: + try: + tipp = input("Geben Sie Ihren Tipp (6 Zahlen zwischen 1 und 49, durch Kommas getrennt) ein: ") + tipp_liste = [int(x.strip()) for x in tipp.split(',')] + if len(tipp_liste) != 6 or not all(1 <= x <= 49 for x in tipp_liste): + raise ValueError + return sorted(tipp_liste) + except ValueError: + print("Ungültige Eingabe. Bitte geben Sie genau 6 gültige Zahlen ein.") + + +def berechne_richtige(tipp, gezogene_zahlen): + """Berechnet die Anzahl der richtigen Tipps.""" + return len(set(tipp) & set(gezogene_zahlen)) + + +def lottosimulation(anzahl_simulationen): + """Führt die Lottosimulation durch und gibt die Ergebnisse aus.""" + tipp = nutzer_tipp() + ergebnisse = [0] * 7 # Index 0-6 für 0 bis 6 richtige Tipps + + start_time = time.time() + + for _ in range(anzahl_simulationen): + gezogene_zahlen = ziehung() + richtige = berechne_richtige(tipp, gezogene_zahlen) + ergebnisse[richtige] += 1 + + end_time = time.time() + laufzeit = end_time - start_time + + # Ausgabe der Ergebnisse + print("\nErgebnisse der Simulation:") + for i in range(7): + relative_haeufigkeit = ergebnisse[i] / anzahl_simulationen * 100 + print(f"{i} richtige Zahlen: {ergebnisse[i]} ({relative_haeufigkeit:.2f}%)") + + # Exakte Gewinnwahrscheinlichkeiten + exakte_wahrscheinlichkeiten = [berechne_exakte_wahrscheinlichkeit(i) for i in range(7)] + print("\nExakte Gewinnwahrscheinlichkeiten:") + for i in range(7): + abweichung = relative_haeufigkeit - exakte_wahrscheinlichkeiten[i] * 100 + print(f"{i} richtige Zahlen: {exakte_wahrscheinlichkeiten[i] * 100:.6f}% (Abweichung: {abweichung:.2f}%)") + + print(f"\nLaufzeit der Simulation: {laufzeit:.4f} Sekunden") + + +def berechne_exakte_wahrscheinlichkeit(richtige): + """Berechnet die exakte Wahrscheinlichkeit für die Anzahl der richtigen Tipps.""" + auswahl = 6 + gesamt = 49 + if richtige < 0 or richtige > 6: + return 0 + falsch = auswahl - richtige + if falsch > 6: + return 0 + # Kombinationen berechnen + kombinationen_richtig = comb(6, richtige) + kombinationen_falsch = comb(43, falsch) # 43 = 49 - 6 + gesamt_kombinationen = comb(49, 6) + return (kombinationen_richtig * kombinationen_falsch) / gesamt_kombinationen + + +def comb(n, k): + """Berechnet die Kombinationen von n über k (n choose k).""" + if k > n: + return 0 + if k == 0 or k == n: + return 1 + k = min(k, n - k) # Nutzen der Symmetrie + numer = 1 + denom = 1 + for i in range(k): + numer *= (n - i) + denom *= (i + 1) + return numer // denom + + +if __name__ == "__main__": + while True: + try: + anzahl_simulationen = int(input("Wie oft möchten Sie die Ziehung simulieren? ")) + if anzahl_simulationen <= 0: + raise ValueError + break + except ValueError: + print("Bitte geben Sie eine positive ganze Zahl ein.") + + lottosimulation(anzahl_simulationen) \ No newline at end of file