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:30]
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 65: Line 65:
  
  
 +<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.1620019835.txt.gz
  • Last modified: 2021/05/03 07:30
  • by Ivo Blöchliger