Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| lehrkraefte:blc:informatik:glf4-20:simulation:python-repe-exos [2021/03/27 12:03] – [Histogram Wüfelsummen] Ivo Blöchliger | lehrkraefte:blc:informatik:glf4-20:simulation:python-repe-exos [2021/04/06 07:48] (current) – [Histogram Wüfelsummen] Ivo Blöchliger | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Einstiegsaufgaben Simulation mit Python ====== | ||
| + | === Corona-Prognose === | ||
| + | Vervollständigen Sie folgende Programm, um die kommenden Wochen zu prognostizieren: | ||
| + | <code python> | ||
| + | # Wöchentlicher Durchschnitt | ||
| + | fallzahlen = 1600 | ||
| + | # Wöchentliche Zunahme in Prozent (oder Abnahme negativ) | ||
| + | zunahme = 20 | ||
| + | |||
| + | # 10 mal wiederholen, | ||
| + | # Aktuelle Fallzahlen ausgeben (mit print) | ||
| + | # Fallzahlen für die nächste Woche berechnen | ||
| + | </ | ||
| + | Die Ausgabe soll wie folgt sein: | ||
| + | <code txt> | ||
| + | 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. | ||
| + | <code python> | ||
| + | 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, | ||
| + | |||
| + | 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. | ||
| + | <code python> | ||
| + | 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, | ||
| + | | ||
| + | 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: | ||
| + | <code python> | ||
| + | def nullen(n): | ||
| + | liste=[] | ||
| + | # Liste mit n+1 Nullen füllen | ||
| + | return liste | ||
| + | print(nullen(3)) | ||
| + | </ | ||
| + | |||
| + | === Histogram === | ||
| + | Schreiben Sie ein Programm, das am Anfang am Anfang folgende Variablen festlegt: | ||
| + | <code python> | ||
| + | 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 = "" | ||
| + | # CSV-Zeichenkette aufbauen (\n in Zeichenkette für Zeilumbruch einfügen) | ||
| + | |||
| + | datei = open(" | ||
| + | datei.write(csv) | ||
| + | datei.close() | ||
| + | </ | ||
| + | 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 '' | ||
| + | |||
| + | <hidden Lösungsvorschlag> | ||
| + | <code python summe-von-n-wuerfeln.py> | ||
| + | from random import randrange | ||
| + | wuerfel = 10 # Anzahl Würfel | ||
| + | versuche = 100000 | ||
| + | |||
| + | def nullen(n): | ||
| + | liste=[] | ||
| + | for i in range(n+1): # n+1 mal wiederholen | ||
| + | liste.append(0) | ||
| + | return liste | ||
| + | |||
| + | def wuerfelsumme(n): | ||
| + | summe = 0 # Das ist eine Null | ||
| + | for i in range(n): | ||
| + | summe += randrange(1, | ||
| + | return summe | ||
| + | |||
| + | # Liste zum Zählen der Vorkommnisse | ||
| + | anzahlen = nullen(6*wuerfel) | ||
| + | |||
| + | # Zufallsversuch ' | ||
| + | for i in range(versuche): | ||
| + | ergebnis = wuerfelsumme(wuerfel) | ||
| + | # Dem ' | ||
| + | anzahlen[ergebnis] += 1 | ||
| + | |||
| + | print(" | ||
| + | print(anzahlen) | ||
| + | |||
| + | csv = " | ||
| + | for summe in range(wuerfel, | ||
| + | csv += " | ||
| + | |||
| + | print(csv) | ||
| + | datei = open(" | ||
| + | datei.write(csv) | ||
| + | datei.close() | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | === 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, | ||
| + | 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, | ||
| + | |||