====== Simulation von Zufallexperimenten ====== ===== Sammelbilderproblem ===== Problemlösung durch Simulation ==== Das Problem ==== Beim Sammelbildproblem (auch: Sammler-Problem) stellt man sich die Frage, wie viele Sammelbilder man kaufen muss, um ein ganzes Album voll zu bekommen. Wir betrachten dazu das Beispiel der Panini Fussballbil- der. ==== Annahmen ==== Im Sammelalbum zu einer Fussball-Grossveranstaltung hat es insgesamt 680 Bilder. Ein Päckchen mit 5 Bildern kostet am Kiosk CHF 1.-. Alle Bilder sind gleich häufig. [^1] Repititiere, was über die Arbeit mit Listen in Python bekannt ist. """ Wiederholung Listen in Python """ animals = ["Tiger", "Loewe", "Regenwurm"] print(animals) print("----- Bei uns gibt es {} Tiere.".format(len(animals))) for animal in animals: print(" Es gibt {}".format(animal)) print("-----") animals.append("Muecke") print("----- Bei uns gibt es {} Tiere.".format(len(animals))) for animal in animals: print(" Es gibt {}".format(animal)) print("-----") newAnimal = input("Neues Tier: ") if newAnimal not in animals: animals.append(newAnimal) else: print("Das hatten wir schon!") print("----- Bei uns gibt es {} Tiere.".format(len(animals))) for animal in animals: print(" Es gibt {}".format(animal)) print("-----") animals.sort(reverse=True) for animal in animals: print(" Es gibt {}".format(animal)) print("----- Bei uns gibt es {} Tiere.".format(len(animals))) n = 2 print("Das {}. Tier der Liste ist {}".format(n+1, animals[n])) vn = ["Paul","Heinrich","Karl-Wilhelm"] nn = ["Ehrlich","Mai","Lange"] for index in range(0,3): print("Hallo {:>12} {:20}!".format(vn[index],nn[index])) # Zuweisen von Werten zu LIsten names = ['Raj', 'Shivam', 'Shreeya', 'Kartik'] marks = [7, 9, 8, 5] div = ['A', 'A', 'C', 'B'] id = [21, 52, 27, 38] # Ueberschrift ausgerichtet drucken print("{:<10}{:_^10}{: ^10}{:>5}".format('Name', 'Marks', 'Division', 'ID')) # Werte ausgerichtet drucken for i in range(0, 4): print("{:<10}{:_^10}{: ^10}{:>5}".format(names[i], marks[i], div[i], id[i])) # Liste generisch erzeugen Zahl = 0 Anzahl = 100 DieListe=[Zahl]*Anzahl # erzeugt eine Liste gefüllt mit anzahl zahlen. Laenge = len(DieListe) # gibt die Länge der Liste listenname zurück. print("Generierte Liste:\n{}\nMit Länge: {}".format(DieListe, Laenge)) ==== 1. Aufgabe ==== Rein hypothetisch: Wie viel kostet es, das Album zu füllen, falls man nie eine Karte doppelt erwischt? ==== 2. Aufgabe ==== Realistisch: Wieviele Bilder muss ein einzelner kaufen, um sein Album zu füllen? Schreibe dazu eine Simulation. * Du darfst die Vereinfachung machen, dass man die Bilder einzeln kaufen kann. * Beschreibe zuerst deine Idee, wie du den Computer das Problem simulieren lässt. * Schreibe eine Funktion sim, welche das Sammelbildproblem einmal simuliert und die Anzahl nötiger Bilder ausgibt. * Führe sim mehrmals durch und bestimme die durchschnittliche Anzahl nötiger Bildkäufe. """ Simulation Sammelbilder A2) Wieviele Bilder muss ein einzelner kaufen, um sein Album zu füllen? """ from random import randint def sim(): zaehler = 0 Sammelliste = [] while len(Sammelliste) < 680: einBildchen = randint(1, 681) if einBildchen in Sammelliste: zaehler += 1 else: Sammelliste.append(einBildchen) zaehler += 1 return zaehler gesamtzahl = 0 anzahlSimulationen = 200 for index in range(0, anzahlSimulationen): x = sim() gesamtzahl += x print("-------------------------------------------------") print("Anzahl Käufe etwa: {:.0f} ({} Simulationen)".format( gesamtzahl/anzahlSimulationen, anzahlSimulationen)) # Optimiere die sim Funktion! ==== 3. Aufgabe ==== Mit Tausch: Wir gehen nun davon aus, dass zwei Freunde miteinander eifrig tauschen. Versuche auch dieses Problem zu simulieren. Wie stark verringert sich die Zahl der jeweils gekauften Bilder? Überlege, wie das Problem simuliert werden kann. ==== 4. Aufgabe ==== Mit Tauschbörse: Versuche das Problem mit Tauschen auf mehr als 2 Personen auszudehnen. Wie viele Bilder müssen im Schnitt bei 50 Personen gekauft werden, welche perfekt miteinander tauschen? Um das Problem effizient zu simulieren, kannst du ähnlich wie in Aufgabe 2 vorgehen, es wird jedoch jeweils solange gekauft, bis jedes Bild 50 mal vorkommt (dann haben alle ihr Album voll.