lehrkraefte:blc:informatik:glf4-20:simulation:tabellenkalkulation-absolute-bezuege

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:tabellenkalkulation-absolute-bezuege [2021/05/03 07:13]
Ivo Blöchliger [Varianten (Expert)]
lehrkraefte:blc:informatik:glf4-20:simulation:tabellenkalkulation-absolute-bezuege [2021/05/03 12:03] (current)
Ivo Blöchliger [Varianten (Expert)]
Line 61: Line 61:
 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). 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 $l\geq k$ wobei $m$ die Anzahl gekaufter Bilder ist, $k$ die Anzahl Bilder, die zwei oder mehrere Male vorhanden sind, und $l$ die Anzahl Bilder, die mindestestens einmal vorhanden sind. D.h. $k-l$ ist die Anzahl Bilder, die genau einmal vorhanden sind.+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, den man zeilenweise berechnen kann. Damit lässt sich wieder ein Baum konstruieren, den man zeilenweise berechnen kann.
  
  
 +<hidden Lösungsvorschlag in Python>
 +Achtung: Der Code ist nicht sehr effizient und braucht sehr viel Speicher und ist nicht geeignet für Werte über 100.
  
 +Das Speicherproblem kann relativ einfach gelöst werden, weil nur zwei Zeilen benötigt werden (alle vorhergehenden müssen nicht gespeichert werden).
 +<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 = "Bilder;P(1 voll);P(2 voll)\n"
 +
 +for m in range(1,8*n):
 +    # Neue Zeile mit Nullen einfügen
 +    p.append([[0 for l in range(n+1)] for k in range(n+1)])  # Leere Zeile
 +
 +    pf = [0,0]  # Wahrscheinlichkeiten 1 oder 2 Alben voll zu haben
 +
 +    for k in range(n+1):     # Anzahl mehrfach vorhandene Bilder
 +        for l in range(n-k+1):   # Anzahl einfach vorhandene Bilder
 +            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)/     # Bild gekauft, das genau einmal vorhanden war
 +            if (l>0):
 +                pkeinmal = p[m-1][k][l-1] * (n-k-(l-1))/ # Bild gekauft, das noch gar nicht vorhanden war
 +
 +            p[m][k][l] = pmehrfach + peinmal + pkeinmal
 +
 +            # Wahrscheinlichkeiten, 1 oder 2 Alben voll zu haben:
 +            if (k==n):
 +                pf[1]+=p[m][k][l]
 +            if (l+k>=n):
 +                pf[0]+=p[m][k][l]
 +
 +    pfull.append(pf)
 +    
 +    print("Mit %3d von %d Bildern: p(1 volles Album)=%.8f, p(2 volle Alben)=%.8f" % (m, n, pfull[-1][0], pfull[-1][1]))
 +    csv += "%d;%f;%f\n" % (m, pfull[-1][0], pfull[-1][1])
 +
 +datei = open("2alben.csv", "w")
 +datei.write(csv)
 +datei.close()
 +
 +
 +
 +</code>
 +
 +{{lehrkraefte:blc:informatik:glf4-20:simulation:2alben-200.svg}}
 +</hidden>
  
  • lehrkraefte/blc/informatik/glf4-20/simulation/tabellenkalkulation-absolute-bezuege.1620018807.txt.gz
  • Last modified: 2021/05/03 07:13
  • by Ivo Blöchliger