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

Both sides previous revision Previous revision
Next revision
Previous revision
lehrkraefte:blc:informatik:glf4-20:simulation:python-repe-exos [2021/03/27 13:02]
Ivo Blöchliger
lehrkraefte:blc:informatik:glf4-20:simulation:python-repe-exos [2021/04/06 09:48] (current)
Ivo Blöchliger [Histogram Wüfelsummen]
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 29: Line 33:
     # zwei mal Würfeln, addieren, summe mit return zurückgeben.     # 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.     return 0     # Muss die Summe, nicht 0 zurückgeben, aber sonst ist das Programm nicht lauffähig.
-    +   
 for i in range(10): for i in range(10):
     print(wuerfelsumme())     print(wuerfelsumme())
Line 42: Line 46:
     return 0     # Muss die Summe, nicht 0 zurückgeben, aber sonst ist das Programm nicht lauffähig.     return 0     # Muss die Summe, nicht 0 zurückgeben, aber sonst ist das Programm nicht lauffähig.
          
 +anzahlWuerfel = 4
 for i in range(10): for i in range(10):
-    print(wuerfelsumme())+    print(wuerfelsumme(anzahlWuerfel))
 </code> </code>
  
Line 52: Line 57:
 === Liste mit n Nullen === === Liste mit n Nullen ===
 Schreiben Sie eine Funktion, die eine Liste mit $n+1$ Nullen erzeugt und zurückgibt. 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> <code python>
 def nullen(n): def nullen(n):
Line 57: Line 64:
     # Liste mit n+1 Nullen füllen     # Liste mit n+1 Nullen füllen
     return liste     return liste
-print(nullen(3))   # Muss [0,0,0,0] ausgeben (Einträge)+print(nullen(3))   # Muss [0,0,0,0] ausgeben (Einträge, damit der Index 3 als letzter noch existiert)
 </code> </code>
  
Line 70: Line 77:
  
 # Liste mit Nullen erzeugen # Liste mit Nullen erzeugen
-# Zufallsversuch durchführen und Einträge entsprechend erhöhen.+# Zufallsversuch 1000 mal durchführen und Einträge der Liste entsprechend erhöhen.
  
 csv = ""     # Zeichenkette für Resultat csv = ""     # Zeichenkette für Resultat
 #  CSV-Zeichenkette aufbauen (\n in Zeichenkette für Zeilumbruch einfügen) #  CSV-Zeichenkette aufbauen (\n in Zeichenkette für Zeilumbruch einfügen)
  
-datei = File.open("histogram.csv", "w"   # Datei überschreiben (schlägt fehl, wenn in Excel geöffnet)+datei = open("histogram.csv", "w"   # Datei überschreiben (schlägt fehl, wenn in Excel geöffnet)
 datei.write(csv)                           # Datei in Datei schreiben datei.write(csv)                           # Datei in Datei schreiben
 datei.close()                              # Datei schliessen datei.close()                              # Datei schliessen
Line 81: Line 88:
 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. 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 ''wuerfel'' Würfeln (mit der Funktion zwei Aufgaben weiter oben).+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.1616846539.txt.gz
  • Last modified: 2021/03/27 13:02
  • by Ivo Blöchliger