"""
Created on Sun Sep  8 15:22:11 2024

@author: starons
"""
"""
Estimation de la valeur de pi par simulation de Monte-Carlo
"""

# On importe les bibliothèques utiles
# -----------------------------------
import numpy as np
from numpy import random
from matplotlib import pyplot as plt

Npi=50000
pi=np.zeros(Npi)

# Simulation de Monte-Carlo
# -------------------------
N = 1000
for k in range(Npi):
    x=random.uniform(0,1,N)
    y=random.uniform(0,1,N)
    r=np.sqrt(x**2+y**2)    # calcul du module
    
# Comptage du nombre de points de module inférieur à 1
# ----------------------------------------------------
    n=0
    for i in range (N):
        if r[i]<1:
            n=n+1
            
# Estimation de pi
# ----------------
    pi[k]=4*n/N
    

# Représentations graphiques
# --------------------------
plt.subplot(121)
plt.plot(x,y,'x')
plt.axis('equal')

plt.subplot(122)
plt.hist(pi,bins='rice')

# affichage du résultat 
# ---------------------
print("Une valeur approchée de pi est {:.5f} +/- {:.5f}".format(np.mean(pi),np.std(pi,ddof=1)/np.sqrt(Npi)))
