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 random import random
|
||||||
from math import floor
|
from math import floor, sqrt
|
||||||
from statistics import mean, variance
|
from statistics import mean, variance
|
||||||
# from matplotlib import pyplot
|
# from matplotlib import pyplot
|
||||||
|
|
||||||
|
@ -56,6 +56,33 @@ def stats_NFBP(R, N):
|
||||||
for n in range(N):
|
for n in range(N):
|
||||||
print("Mean H_{} : {} (variance {})".format(n, mean(H[n]), variance(H[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):
|
def simulate_NFDBP(N):
|
||||||
"""
|
"""
|
||||||
|
@ -140,6 +167,7 @@ for j in range(sim["i"] + 1):
|
||||||
|
|
||||||
print()
|
print()
|
||||||
stats_NFDBP(10 ** 4, 10)
|
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,
|
# pyplot.plot([1, 2, 4, 4, 2, 1], color = 'red', linestyle = 'dashed', linewidth = 2,
|
||||||
|
|
Loading…
Reference in a new issue