import numpy.random as rd
import numpy as np
import matplotlib.pyplot as plt

#EXERCICE 1
def phi(x):
    return 1/np.sqrt(2*np.pi)*np.exp(-x**2/2)
x = np.linspace(-5,5,50)
plt.close()
plt.plot(x,phi(x))
N = 10000
X = rd.normal(size=N)
plt.hist(X,range=(-5,5),bins=50,density=True,color="yellow",edgecolor="red")
plt.show()

#EXERCICE 2
#SANS AIDE
plt.clf()
X=rd.binomial(40,1/2,size=100000)
intervalle=np.zeros(31)
for k in range(31):
    intervalle[k]=4.5+k
plt.hist(X,bins=intervalle,density=True,color="yellow",edgecolor="red")
def phi(x):
    return (1/np.sqrt(20*np.pi))*np.exp(-(x-20)**2/20)
xbis = np.linspace(5,35,1000)

plt.plot(xbis,phi(xbis))

plt.show()
#AVEC AIDE
import numpy.random as rd
import matplotlib.pyplot as plt
import numpy as np
n=20
p=0.5
def phi(x):
    return 1/np.sqrt(2*np.pi)*np.exp(-x**2/2)
x = np.linspace(-5,5,50)
plt.close()
plt.plot(x,phi(x))
N = 100000
S=rd.binomial(20,1/2,N)
X =(S-n*p*np.ones(N))/np.sqrt(n*p*(1-p))
I=np.linspace(-1/2,n+1/2,n)
L=(I-n*p)/np.sqrt(n*p*(1-p))
plt.hist(X,bins=L,density=True,color="yellow",edgecolor="red")
plt.show()

#PARTIE 2 12 uniformes
import matplotlib.pyplot as plt
def phi(x):
    return 1/np.sqrt(2*np.pi)*np.exp(-x**2/2)
x = np.linspace(-5,5,50)
plt.close()
plt.plot(x,phi(x))
N = 10000
U = rd.random(size=[12,N])
X = np.sum(U,axis=0)-6
plt.hist(X,range=(-5,5),bins=50,density=True,color="yellow",edgecolor="red")
plt.show()