lehrkraefte:blc:informatik:glf4-20:simulation:python-repe-exos

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
lehrkraefte:blc:informatik:glf4-20:simulation:python-repe-exos [2021/03/27 10:15]
Ivo Blöchliger created
lehrkraefte:blc:informatik:glf4-20:simulation:python-repe-exos [2021/04/06 09:48] (current)
Ivo Blöchliger [Histogram Wüfelsummen]
Line 1: Line 1:
-====== Repetitionsaufgaben Python ======+====== Einstiegsaufgaben Simulation mit Python ======
 === Corona-Prognose === === Corona-Prognose ===
 Vervollständigen Sie folgende Programm, um die kommenden Wochen zu prognostizieren: Vervollständigen Sie folgende Programm, um die kommenden Wochen zu prognostizieren:
Line 7: Line 7:
 # Wöchentliche Zunahme in Prozent (oder Abnahme negativ) # Wöchentliche Zunahme in Prozent (oder Abnahme negativ)
 zunahme = 20 zunahme = 20
 +
 +# 10 mal wiederholen, Variable 'woche' hochzählen
 +  # Aktuelle Fallzahlen ausgeben (mit print)
 +  # Fallzahlen für die nächste Woche berechnen
 </code> </code>
 Die Ausgabe soll wie folgt sein: Die Ausgabe soll wie folgt sein:
Line 21: Line 25:
 Woche 9: 8255.648563 Woche 9: 8255.648563
 </code> </code>
 +
 +=== 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, aber sonst ist das Programm nicht lauffähig.
 +   
 +for i in range(10):
 +    print(wuerfelsumme())
 +</code>
 +
 +=== 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, aber sonst ist das Programm nicht lauffähig.
 +    
 +anzahlWuerfel = 4
 +for i in range(10):
 +    print(wuerfelsumme(anzahlWuerfel))
 +</code>
 +
 +
 +==== 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]]
 +<code python>
 +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)
 +</code>
 +
 +=== 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 = ""     # 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
 +</code>
 +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).
 +
 +<hidden Lösungsvorschlag>
 +<code python summe-von-n-wuerfeln.py>
 +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
 +</code>
 +</hidden>
 +
 +=== 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).
  
  
  • lehrkraefte/blc/informatik/glf4-20/simulation/python-repe-exos.1616836526.txt.gz
  • Last modified: 2021/03/27 10:15
  • by Ivo Blöchliger