====== Einstiegsaufgaben Simulation mit Python ====== === Corona-Prognose === Vervollständigen Sie folgende Programm, um die kommenden Wochen zu prognostizieren: # Wöchentlicher Durchschnitt fallzahlen = 1600 # Wöchentliche Zunahme in Prozent (oder Abnahme negativ) zunahme = 20 # 10 mal wiederholen, Variable 'woche' hochzählen # Aktuelle Fallzahlen ausgeben (mit print) # Fallzahlen für die nächste Woche berechnen Die Ausgabe soll wie folgt sein: Woche 0: 1600.000000 Woche 1: 1920.000000 Woche 2: 2304.000000 Woche 3: 2764.800000 Woche 4: 3317.760000 Woche 5: 3981.312000 Woche 6: 4777.574400 Woche 7: 5733.089280 Woche 8: 6879.707136 Woche 9: 8255.648563 === Würfelsumme === Programmieren Sie eine Funktion, die die Summe zweier (normaler) Spielwürfel zurückgibt. from random import randrange def wuerfelsumme(): # zwei mal Würfeln, addieren, summe mit return zurückgeben. return 0 # Muss die Summe, nicht 0 zurückgeben, aber sonst ist das Programm nicht lauffähig. for i in range(10): print(wuerfelsumme()) === Würfelsumme von n Würfeln === Programmieren Sie eine Funktion, die die Summe von $n$ Würfeln zurückgibt. from random import randrange def wuerfelsumme(n): # n mal Würfeln, addieren, summe mit return zurückgeben. return 0 # Muss die Summe, nicht 0 zurückgeben, aber sonst ist das Programm nicht lauffähig. anzahlWuerfel = 4 for i in range(10): print(wuerfelsumme(anzahlWuerfel)) ==== Histogram Wüfelsummen ==== Wir wollen jetzt ermitteln, welche Würfelsumme wie oft vorkommt. Dazu benutzen wir eine Liste, deren $i$-ter Eintrag angibt, wie oft die Summe $i$ gewürfelt wurde. === Liste mit n Nullen === Schreiben Sie eine Funktion, die eine Liste mit $n+1$ Nullen erzeugt und zurückgibt. Siehe auch [[lehrkraefte:blc:informatik:glf4-20:simulation:python-repe#listen|im Cheat-Sheet]] def nullen(n): liste=[] # Liste mit n+1 Nullen füllen return liste print(nullen(3)) # Muss [0,0,0,0] ausgeben (4 Einträge, damit der Index 3 als letzter noch existiert) === Histogram === Schreiben Sie ein Programm, das am Anfang am Anfang folgende Variablen festlegt: from random import randrange wuerfel = 4 # Anzahl Würfel versuche = 1000 # Wie viel mal Würfeln # Funktionen definieren # Liste mit Nullen erzeugen # Zufallsversuch 1000 mal durchführen und Einträge der Liste entsprechend erhöhen. csv = "" # Zeichenkette für Resultat # CSV-Zeichenkette aufbauen (\n in Zeichenkette für Zeilumbruch einfügen) datei = open("histogram.csv", "w") # Datei überschreiben (schlägt fehl, wenn in Excel geöffnet) datei.write(csv) # Datei in Datei schreiben datei.close() # Datei schliessen Erzeugen Sie mit der Funktion der Aufgabe darüber eine Liste mit genügend Einträgen, damit jede mögliche Summe einen Platz in der Liste hat. Bestimmen Sie dann ''versuche'' mal die Summe von Anzahl''wuerfel'' Würfeln (mit der Funktion zwei Aufgaben weiter oben). from random import randrange wuerfel = 10 # Anzahl Würfel versuche = 100000 # Wie viel mal Würfeln def nullen(n): liste=[] for i in range(n+1): # n+1 mal wiederholen liste.append(0) # Eine Null anfügen return liste def wuerfelsumme(n): summe = 0 # Das ist eine Null for i in range(n): # Diese Variable i hat nichts mit der Variable i unten zu tun summe += randrange(1,7) return summe # Liste zum Zählen der Vorkommnisse anzahlen = nullen(6*wuerfel) # Zufallsversuch 'versuche' mal durchführen und Einträge der Liste entsprechend erhöhen. for i in range(versuche): ergebnis = wuerfelsumme(wuerfel) # Dem 'ergebnis' entsprechendes Element in der Liste 'anzahlen' um 1 erhöhen anzahlen[ergebnis] += 1 print("%d Versuche mit %d Würfeln" % (versuche, wuerfel)) print(anzahlen) csv = "Summe;Anzahl\n" # Zeichenkette für Resultat for summe in range(wuerfel, 6*wuerfel+1): # Alle möglichen Summen csv += "%d;%d\n" % (summe, anzahlen[summe]) print(csv) datei = open("histogram.csv", "w") # Datei überschreiben (schlägt fehl, wenn in Excel geöffnet) datei.write(csv) # Datei in Datei schreiben datei.close() # Datei schliessen === Histogramm in Excel zeichnen === Laden Sie die CSV-Datei in Excel, um das Histogram zu zeichnen. D.h. eine Grafik, die anzeigt, wie viel mal welche Würfelsumme gewürfelt wurde. ====== Expert-Aufgaben ====== === Corona-Simulation kompliziert === Versuchen Sie, einen Epidemieverlauf zu prognostizieren, indem Sie die Grösse von entsprechenden Gruppen (ansteckbar, angesteckt, ansteckend, krank, genesen und immun) simulieren. Plotten Sie dann den Verlauf der Epidemie. === Besuchswahrscheinlichkeit === In einem ganz einfachen Würfelspiel startet die Spielfigur bei Feld 0 und zieht immer so viele Felder weiter, wie gewürfelt wurde. Ein Kollege von mir meinte, dass die Felder, die Vielfache von 7 sind, häufiger erreicht werden, und darum sei z.B. das Feld 28 häufig ein Spezialfeld. Ist da was dran? Berechnen Sie die Wahrscheinlichkeiten, dass ein Feld besucht wird (angenähert oder exakt).