Skip to Content

Première simulation de Monte Carlo avec le module random

  1. import matplotlib.mlab as mlab
  2. from random import *
  3. from math import *
  4. import pylab
  5. # coordonnées de 2 sommets puisque longueur = largeur
  6. x1 = 0
  7. x2 = 100
  8. y1 = 0
  9. y2 = 100
  10. stv = 2 # déviation standard pour le rayon
  11. # 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)
  12. stv = stv/sqrt(2)
  13.  
  14. surfaces = []
  15. # nombre d'itérations
  16. N = 10000
  17.  
  18. #calcul des surfaces avec random.gauss
  19. for n in range(N):
  20. longueur = gauss(sqrt((x2-x1)**2 + (y1-y1)**2),stv)
  21. largeur = gauss(sqrt((x1-x1)**2 + (y2-y1)**2),stv)
  22. surf = longueur*largeur
  23. surfaces=surf+[surface]
  24.  
  25. mu = pylab.mean(surfaces)
  26. sigma = pylab.std(surfaces)
  27. # résultats bruts d'une des simulations
  28. print mu, sigma
  29. 9999.95247682 201.33026996
  30. # résultats en tenant compte de la rêgle des chiffres significatifs
  31. print "Resultats :"
  32. print "Moyenne = ","%.f" % mu
  33. print "déviation standard = ", "%.f" % sigma
  34.  
  35. Resultats :
  36. Moyenne = 10000
  37. déviation standard = 201
  38.  
  39. # tracé de l'histogramme
  40. n, bins, patches = pylab.hist(surf, 60, normed=1, facecolor='blue', alpha=0.75)
  41. y = mlab.normpdf( bins, mu, sigma)
  42. l = pylab.plot(bins, y, 'r--', linewidth=3)
  43. #plt.xlabel('Smarts')
  44. pylab.xlabel('surface')
  45. pylab.ylabel(u'probabilité')
  46. pylab.title(r'$\mathrm{histogramme\ de\ la\ surface:}\ \mu=%.f,\ \sigma=%f$' %(mu, sigma))
  47. pylab.grid(True)
  48. pylab.show()