Zitat:Die Programmieraufgabe bestehe darin, mittels stochastischer Simulation die Wahrscheinlichkeit dafür abzuschätzen,
wie hoch die Chance ist, bei KENO-Typ N, 0, 1, 2 ... oder gar N Richtige auf seinem Tippzettel zu haben?
https://trainyourprogrammer.de/python-27...types.html
Wer daran Interesse hat kann das fertige "Python-Programm" mal durchführen.
Ein Beispiel:
KENO10
365 Tage | 1 Jahr
Der Python-Code ist aus o.g. Link:
# fuer das Mischen der Liste
import random
# manuelle Exception bei Eingaben außerhalb des zulässigen Bereiches
class RangeError(Exception):
pass
# Formatierung einer Zahl mit Tausender-Trennzeichen
def dot(number):
return format(number,',d').replace(',','.')
# Anzahl der Nummern
NO_KENO_NUMBERS = 70
# Anzahl der Gewinnzahlen
NO_WINNING_NUMBERS = 20
# Anzahl der Durchläufe, für die jeweils ein Fortschrittspunkt ausgegeben werden soll
PROGRESS_DOT = 25000
# Eingabe des KENO-Sytems
while True:
try:
system = int(input('\nWelcher KENO-Typ (2 bis 10) soll simuliert werden -> '))
if system in list(range(2, 11)):
break
else:
raise RangeError
except ValueError:
print('Bitte eine Ganzzahl für den KENO-Typ eingeben.')
except RangeError:
print('Die Zahl muss zwischen 2 und 10 liegen.')
# Eingabe der Anzahl an Durchläufen
while True:
try:
no_iterations = int(input('\nWie viele Durchläufe sollen simuliert werden -> '))
if no_iterations > 0:
break
else:
raise RangeError
except ValueError:
print('Bitte eine Ganzzahl für die Anzahl an Durchläufen eingeben.')
except RangeError:
print('Die Anzahl der Durchläufe muss größer als Null sein.')
# Festlegung der Spielernummern
player_numbers = list(range(1, system + 1))
# Anlegen des Dictionaries, in dem die Ergebnisse gespeichert werden
result_dict = {}
for index in range(0, system + 1):
result_dict[index] = 0
print('WORK IN PROGRESS ', end='')
# Simulieren der definierten Anzahl an Durchläufen
for iteration in range(no_iterations):
keno_numbers = list(range(1, NO_KENO_NUMBERS + 1))
random.shuffle(keno_numbers)
winning_numbers = []
for index in range(NO_WINNING_NUMBERS):
winning_numbers.append(keno_numbers.pop())
winning_numbers.sort()
no_right_numbers = 0
for element in player_numbers:
if element in winning_numbers:
no_right_numbers += 1
result_dict[no_right_numbers] += 1
if iteration % PROGRESS_DOT == 0:
print('.', end='')
# Ausgabe der Ergebnisse
headline = f'\nErgebnisse "KENO {system}" ({dot(no_iterations)} Durchläufe)'
separator = len(headline) * '-'
print(headline)
print(separator)
for element in result_dict:
print(f'{element:>2} Richtige: {dot(result_dict[element]):>10} mal ->{result_dict[element]/no_iterations*100:>9.5f}%')
print(separator)