ChatGPT Version entfernt

This commit is contained in:
mantaru 2024-09-15 14:32:48 +02:00
parent a711767d1e
commit d5d6c0e27d

View File

@ -1,100 +0,0 @@
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)