ChatGPT Version entfernt
This commit is contained in:
parent
a711767d1e
commit
d5d6c0e27d
100
main_chatgpt.py
100
main_chatgpt.py
@ -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)
|
Loading…
Reference in New Issue
Block a user