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 l0): pkeinmal = p[m-1][k][l-1] * (n-k-(l-1))/n # 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()