Merge branch 'iterative' of lacau/Projet_Boites into master

This commit is contained in:
Clement Lacau 2023-03-13 10:27:03 +01:00 committed by Gitea
commit 75d0c36d8d

View file

@ -1,5 +1,5 @@
from random import random
from math import floor
from math import floor, sqrt
from statistics import mean, variance
# from matplotlib import pyplot
@ -56,6 +56,33 @@ def stats_NFBP(R, N):
for n in range(N):
print("Mean H_{} : {} (variance {})".format(n, mean(H[n]), variance(H[n])))
def stats_NFBP_iter(R, N):
"""
Runs R runs of NFBP (for N packages) and studies distribution, variance, mean...
Calculates stats during runtime instead of after to avoid excessive memory usage.
"""
print("Running {} NFBP simulations with {} packages".format(R, N))
ISum = 0
IVarianceSum = 0
HSum = [0 for _ in range(N)]
HSumVariance = [0 for _ in range(N)]
for i in range(R):
sim = simulate_NFBP(N)
ISum += sim["i"]
IVarianceSum += sim["i"]**2
for n in range(N):
HSum[n] += sim["H"][n]
HSumVariance[n] += sim["H"][n]**2
I = ISum/R
IVariance = sqrt(IVarianceSum/(R-1) - I**2)
print("Mean number of boxes : {} (variance {})".format(I, IVariance))
for n in range(n):
Hn = HSum[n]/R
HVariance = sqrt(HSumVariance[n]/(R-1) - Hn**2)
print("Index of box containing the {}th package (H_{}) : {} (variance {})".format(n, n, Hn, HVariance))
def simulate_NFDBP(N):
"""
@ -140,6 +167,7 @@ for j in range(sim["i"] + 1):
print()
stats_NFDBP(10 ** 4, 10)
stats_NFBP_iter(10**6, 10)
#
# pyplot.plot([1, 2, 4, 4, 2, 1], color = 'red', linestyle = 'dashed', linewidth = 2,