Merge branch 'iterative' of lacau/Projet_Boites into master
This commit is contained in:
commit
75d0c36d8d
1 changed files with 29 additions and 1 deletions
30
Probas.py
30
Probas.py
|
@ -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,
|
||||
|
|
Loading…
Reference in a new issue