Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
lehrkraefte:blc:informatik:glf4-20:simulation:tabellenkalkulation-absolute-bezuege [2021/05/02 17:34] Ivo Blöchliger |
lehrkraefte:blc:informatik:glf4-20:simulation:tabellenkalkulation-absolute-bezuege [2021/05/03 11:53] Ivo Blöchliger [Varianten (Expert)] |
||
---|---|---|---|
Line 24: | Line 24: | ||
==== Berechnung von $p_{m,k}$ ==== | ==== Berechnung von $p_{m,k}$ ==== | ||
+ | Man betrachtet einen Wahrscheinlichkeitsbaum mit den Knoten $p_{m,k}$ | ||
Um diese Wahrscheinlichkeiten zu berechnen stellen wir erst mal fest, dass | Um diese Wahrscheinlichkeiten zu berechnen stellen wir erst mal fest, dass | ||
$$ | $$ | ||
- | p_{0,0}=1 \text{ und } p_{0,k}=0 \text{ für }k\geq 1 | + | p_{1,1}=1 \text{ und } p_{1,k}=0 \text{ für }k > 1 |
$$ | $$ | ||
Line 38: | Line 39: | ||
* Oder man hatte vorher $k-1$ verschiedene und erhält eines, das man noch nicht hat. Die Wahrscheinlichkeit dafür beträgt $\frac{n-k+1}{n}$. | * Oder man hatte vorher $k-1$ verschiedene und erhält eines, das man noch nicht hat. Die Wahrscheinlichkeit dafür beträgt $\frac{n-k+1}{n}$. | ||
+ | Damit können wir den Baum zeilenweise berechnen, bzw. die Wahrscheinlichkeiten für $m$ aus den Wahrscheinlichkeiten für $m-1$. | ||
+ | |||
+ | ==== Empfohlenes Tabellen-Layout ==== | ||
+ | |||
+ | {{: | ||
+ | |||
+ | **Tipps und Tricks**: | ||
+ | * Bennen Sie die Zelle mit der Anzahl Bilder. | ||
+ | * Verwenden Sie auch in den ersten beiden Kolonnen Formeln, um die Werte aus den vorhergehenden Werten zu berechnen. Das hat den Vorteil, dass Sie die gesamte Zeile 5 (für $m=2$) nach unten kopieren können. | ||
+ | * Zum Füllen mit Nullen geben Sie in zwei benachbarten Zellen eine Null ein, markieren Sie diese und kopieren Sie dann (wird nur eine Zelle markiert, wird diese beim Kopieren hochgezählt). | ||
+ | |||
+ | Beantworten Sie folgende Fragen, einmal für $n=20$, einmal für $n=200$. | ||
+ | |||
+ | * Wie viele Bilder muss man kaufen, damit die Wahrscheinlichkeit eines vollen Albums | ||
+ | * min. 50% beträgt? | ||
+ | * min. 90% beträgt? | ||
+ | * min. 99% beträgt? | ||
+ | * min. 99.9% beträgt? | ||
+ | |||
+ | ===== Varianten (Expert) ===== | ||
+ | Wenn man jetzt zwei Alben hat, die man füllen möchte? Das Problem lässt sich wohl nur mit vielen Kniffs in Excel lösen, da muss wohl ein Python-Programm her (simuliert oder exakt). | ||
+ | |||
+ | Für die exakte Lösung ist folgender Ansatz ein gangbarer Weg: Man betrachtet die Wahrscheinlichkeiten $p_{m,k,l}$ mit wobei $m$ die Anzahl gekaufter Bilder ist, $k$ die Anzahl Bilder, die zwei oder mehrere Male vorhanden sind, und $l$ die Anzahl Bilder, die genau einmal vorhanden sind. | ||
+ | Damit lässt sich wieder ein Baum konstruieren, | ||
+ | |||
+ | |||
+ | <hidden Lösungsvorschlag in Python> | ||
+ | <code python sammelalben.py> | ||
+ | n = 20 | ||
+ | |||
+ | p = [[[1 if k==l and k==0 else 0 for l in range(n+1)] for k in range(n+1)]] | ||
+ | |||
+ | pfull = [[0,0]] | ||
+ | |||
+ | csv = " | ||
+ | |||
+ | for m in range(1, | ||
+ | # Neue Zeile mit Nullen einfügen | ||
+ | p.append([[0 for l in range(n+1)] for k in range(n+1)]) | ||
+ | |||
+ | pf = [0,0] # Wahrscheinlichkeiten 1 oder 2 Alben voll zu haben | ||
+ | |||
+ | for k in range(n+1): | ||
+ | for l in range(n-k+1): | ||
+ | pmehrfach = 0.0 | ||
+ | peinmal = 0.0 | ||
+ | pkeinmal = 0.0 | ||
+ | pmehrfach = p[m-1][k][l] * k/n # Bild gekauft, das schon mehrfach vorhanden war | ||
+ | if (k>0 and l<n): | ||
+ | peinmal = p[m-1][k-1][l+1] * (l+1)/ | ||
+ | if (l>0): | ||
+ | pkeinmal = p[m-1][k][l-1] * (n-k-(l-1))/ | ||
+ | |||
+ | p[m][k][l] = pmehrfach + peinmal + pkeinmal | ||
+ | |||
+ | # Wahrscheinlichkeiten, | ||
+ | if (k==n): | ||
+ | pf[1]+=p[m][k][l] | ||
+ | if (l+k> | ||
+ | pf[0]+=p[m][k][l] | ||
+ | |||
+ | pfull.append(pf) | ||
+ | | ||
+ | print(" | ||
+ | csv += " | ||
+ | |||
+ | datei = open(" | ||
+ | datei.write(csv) | ||
+ | datei.close() | ||
+ | |||
+ | |||
+ | |||
+ | </ | ||
+ | </ | ||