lehrkraefte:blc:informatik:glf4-20:simulation

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 [2021/03/26 13:03]
michael.greminger
lehrkraefte:blc:informatik:glf4-20:simulation [2021/03/26 15:31] (current)
michael.greminger
Line 9: Line 9:
 <hidden Lösungsvorschlag> <hidden Lösungsvorschlag>
 <code python> <code python>
-kommt bald...+from random import randint 
 + 
 +for i in range(20): 
 +    print randint(1,1000)
 </code>   </code>  
 </hidden> </hidden>
  
-=== Aufgabe === +=== Aufgabe 1.5 === 
-Mit welcher Wahrscheinlichkeit treten bei zehnmal Würfeln alle Zahlen mindestens einmal auf? +Erweitern Sie das Programm von Aufgabe 1. Das Programm soll 400 Zufallszahlen (zwischen 1 und 1000) in eine Liste einfügen (mit einer ersten Schleife).
  
-Hinweis für die Lösung: +Mit einer zweiten Schleife soll anschliessend die grösste der 400 Zufallszahlen bestimmt und ausgegeben werden.
  
 +Hinweis: Mit folgendem Code kann durch eine Liste "geloopt" werden.
 +<code python>
 +for zahl in meineListe:
 +    print zahl
 +</code> 
  
 +<hidden Lösungsvorschlag>
 +<code python>
 +from random import randint
 +
 +numbers=[]
 +for i in range(400):
 +    numbers.append(randint(1,1000))
 +
 +largest = 0
 +for i in numbers:
 +    if i > largest:
 +        largest = i
 +
 +print largest
 +</code>  
 +</hidden>
 +
 +=== Aufgabe 2 ===
 +Mit welcher Wahrscheinlichkeit treten bei zehnmal Würfeln alle Zahlen mindestens einmal auf? 
 +
 +Hinweis für die Lösung: Würfeln Sie eine Zahl z. Anschliessend prüfen Sie, ob die die Zahl z noch nicht gewürfelt wurde (ist sie in meiner Liste). Wenn ja (dh noch nicht gewürfelt), dann fügen Sie diese Zahl zu "meiner Liste" hinzu. Anschliessend ...
  
 <hidden Lösungsvorschlag> <hidden Lösungsvorschlag>
 <code python> <code python>
-kommt bald...+from random import randint 
 + 
 +def sim(): 
 +    numbers = [] 
 +    for i in range(10): 
 +        z = randint(1,6)                # es wird gewürfelt 
 +        if (not z in numbers):          # wenn Zahl bis jetzt noch nicht gewürfelt 
 +            numbers.append(z)           # Zahl hinzufügen 
 +            if (len(numbers) == 6):     # wenn wir alle Zahlen haben 
 +                return 1                 
 +    return 0                            # nicht alle Zahlen wurden gewürfelt 
 + 
 +     
 +anzahlVersuche = 10000 
 +alleAugenzahlen = 0 
 +for i in range(anzahlVersuche): 
 +    alleAugenzahlen += sim() 
 +     
 +print alleAugenzahlen / anzahlVersuche
 </code>   </code>  
 </hidden> </hidden>
Line 31: Line 78:
 Selbstverständlich ist es möglich, diese Wahrscheinlichkeit zu exakt zu berechnen (in der Mathematik, siehe dazu https://de.wikipedia.org/wiki/Geburtstagsparadoxon. Wir wollen hier aber versuchen, diese Wahrscheinlichkeiten mit Simulationen zu bestimmen. Selbstverständlich ist es möglich, diese Wahrscheinlichkeit zu exakt zu berechnen (in der Mathematik, siehe dazu https://de.wikipedia.org/wiki/Geburtstagsparadoxon. Wir wollen hier aber versuchen, diese Wahrscheinlichkeiten mit Simulationen zu bestimmen.
  
-Schreibe eine Funktion (zb. «isBirthdayClash(nrOfPersons)») welche für eine Anzahl von Personen testet, ob es mindestens zwei Personen gibt mit dem gleichen Geburtstag. Die Funktion soll das für eine Menge von Personen machen und entweder 0 oder 1 (für einen «clash») zurückgeben. +Schreiben Sie eine Funktion (zb. «isBirthdayClash(nrOfPersons)») welche für eine Anzahl von Personen testet, ob es mindestens zwei Personen gibt mit dem gleichen Geburtstag. Die Funktion soll das für eine Menge von Personen machen und entweder 0 oder 1 (für einen «clash») zurückgeben. 
 <hidden Lösungsvorschlag> <hidden Lösungsvorschlag>
 <code python> <code python>
Line 39: Line 86:
  
 === Aufgabe 3.2 === === Aufgabe 3.2 ===
-Schreibe eine zweite Funktion (zb. «percentageClash(nrOfPersons, loops)), welche die Funktion von Teil1 «loops mal» benutzt und so die Wahrscheinlichkeit simuliert. Rückgabewert soll ein float sein (Wahrscheinlichkeit zwischen 0 und 1).+Schreiben Sie eine zweite Funktion (zb. «percentageClash(nrOfPersons, loops)), welche die Funktion von Teil1 «loops mal» benutzt und so die Wahrscheinlichkeit simuliert. Rückgabewert soll ein float sein (Wahrscheinlichkeit zwischen 0 und 1).
 <hidden Lösungsvorschlag> <hidden Lösungsvorschlag>
 <code python> <code python>
Line 47: Line 94:
  
 === Aufgabe 3.3 === === Aufgabe 3.3 ===
-Erweitere dein Programm, indem du für simulierten Wahrscheinlichkeiten bis 0.99 mit den Anzahl Personen ausgibst. Bei welcher Personenanzahl ist die Wahrscheinlichkeit 0.5. Wann erreicht sie 0.99?+Erweitern Sie ihr Programm, indem die simulierten Wahrscheinlichkeiten bis 0.99 mit den Anzahl Personen ausgibst. Bei welcher Personenanzahl ist die Wahrscheinlichkeit 0.5. Wann erreicht sie 0.99?
 <hidden Lösungsvorschlag> <hidden Lösungsvorschlag>
 <code python> <code python>
  • lehrkraefte/blc/informatik/glf4-20/simulation.1616760201.txt.gz
  • Last modified: 2021/03/26 13:03
  • by michael.greminger