import numpy as np
import matplotlib.pyplot as plt

# Mesures de d et D

Dmes =  # cm
dmes =  # cm

# Entrez les précisions

DeltaD = 0.1# cm
Deltad = 0.1# cm

# Entrez la fonction de composition

def Bessel(D,d):
    return (D**2-d**2)/(4*D)

# Entrez le nombre de simulation que vous voulez effectuer

N = 100000

# Calculs avec une distribution de probabilité uniforme
Focale = []

for i in range(0,N):
    D = np.random.uniform(Dmes-DeltaD,Dmes+DeltaD)
    d = np.random.uniform(dmes-Deltad,dmes+Deltad)
    Focale.append(Bessel(D,d))

plt.figure(1)
plt.hist(Focale,bins = 'rice')
plt.title('Résultat du tirage aléatoire des focales après simulation')
plt.xlabel("f' (cm)")


# Calcul et affichage moyenne et écart type

moy = np.mean(Focale)
std = np.std(Focale,ddof=1)

print("Moyenne = {:.2f} cm".format(moy))
print("Ecart type = {:.2f} cm".format(std))