lehrkraefte:blc:informatik:glf4-20:simulation

Simulation

Lernjournal soll geführt werden. Kann in Prüfung verwendet werden!

simulation.pdf

Aufgabe 1

Schreiben Sie ein Programm, welches 20 Zufallszahlen zwischen 1 und 1000 erzeugt und diese ausgibt.

Lösungsvorschlag

Lösungsvorschlag

from random import randint
 
for i in range(20):
    print randint(1,1000)

Aufgabe 1.5

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).

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.

for zahl in meineListe:
    print zahl

Lösungsvorschlag

Lösungsvorschlag

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

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 …

Lösungsvorschlag

Lösungsvorschlag

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

Aufgabe 3.1

Beim Geburtstagsparadoxon geht es darum, die Wahrscheinlichkeit zu bestimmen, dass in einer Gruppe von n Personen mindestens zwei Personen am gleichen Tag Geburtstag haben. Man nennt es Paradoxon, da intuitiv die Wahrscheinlichkeit falsch geschätzt wird.

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.

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.

Lösungsvorschlag

Lösungsvorschlag

kommt bald...

Aufgabe 3.2

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).

Lösungsvorschlag

Lösungsvorschlag

kommt bald...

Aufgabe 3.3

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?

Lösungsvorschlag

Lösungsvorschlag

kommt bald...
  • lehrkraefte/blc/informatik/glf4-20/simulation.txt
  • Last modified: 2021/03/26 15:31
  • by Michael Greminger