import matplotlib.mlab as mlab
from random import *
from math import *
import pylab
# coordonnées de 2 sommets puisque longueur = largeur
x1 = 0
x2 = 100
y1 = 0
y2 = 100
stv = 2 # déviation standard pour le rayon
# une déviation standard de 2 m en rayon sur chaque coin correspond à une déviation standard en x ou y de stv/sqrt(2)
stv = stv/sqrt(2)
surfaces = []
# nombre d'itérations
N = 10000
#calcul des surfaces avec random.gauss
for n in range(N):
longueur = gauss(sqrt((x2-x1)**2 + (y1-y1)**2),stv)
largeur = gauss(sqrt((x1-x1)**2 + (y2-y1)**2),stv)
surf = longueur*largeur
surfaces=surf+[surface]
mu = pylab.mean(surfaces)
sigma = pylab.std(surfaces)
# résultats bruts d'une des simulations
print mu, sigma
9999.95247682 201.33026996
# résultats en tenant compte de la rêgle des chiffres significatifs
print "Resultats :"
print "Moyenne = ","%.f" % mu
print "déviation standard = ", "%.f" % sigma
Resultats :
Moyenne = 10000
déviation standard = 201
# tracé de l'histogramme
n, bins, patches = pylab.hist(surf, 60, normed=1, facecolor='blue', alpha=0.75)
y = mlab.normpdf( bins, mu, sigma)
l = pylab.plot(bins, y, 'r--', linewidth=3)
#plt.xlabel('Smarts')
pylab.xlabel('surface')
pylab.ylabel(u'probabilité')
pylab.title(r'$\mathrm{histogramme\ de\ la\ surface:}\ \mu=%.f,\ \sigma=%f$' %(mu, sigma))
pylab.grid(True)
pylab.show()