# -*- coding: utf-8 -*-
"""
Created on Mon Feb  2 14:56:05 2026

@author: pjaub
"""

from math import ceil, sqrt
import random as rd
import matplotlib.pyplot as plt

plt.close("all")

            

def moyenne(L):
    return # A compléter

def ecart_type(L):
    m = moyenne(L)

    return # A compléter

def frequences_cumulées(Serie):
    """
         A compléter
    """
    # A compléter
    return x, y


def proportion_intervalle(moyenne, ecart_type, Moy_theorique):
    """
         A compléter
    """
    s = 0
    for k in range(N):
        a = moyenne[k] - 2*ecart_type[k]/sqrt(n)
        b = moyenne[k] + 2*ecart_type[k]/sqrt(n)
        if a <= Moy_theorique <= b:
            s += 1
    return s/N
            

def binomiale(n, p):
    """
         A compléter
    """
    x = 0
    # A compléter
    return x

def uniforme(a, b):
    """
         A compléter
    """
    return a + (b-a)*rd.random()

def normale(esperance, ecart_type):
    """
         A compléter
    """
    return rd.gauss(esperance, ecart_type)

def baroque():
    """
         Fonction aléatoire inconnue
    """
    if rd.random() < 0.9:
        return rd.gauss(0, 0.5)  
    return rd.gauss(10, 0.5)
    


n = 40
N = 1000


print('baroque')
E = [ [baroque() for _ in range(n)] for _ in range(N) ]
Moyennes = [ moyenne(e) for e in E]
Ecart = [ ecart_type(e) for e in E]

m = 1
s = sqrt(9.25)
print(proportion_intervalle(Moyennes, Ecart, m))
print('')

plt.figure('baroque')
x, y = frequences_cumulées(Moyennes)
plt.plot(x,y, label="Frequences cumulées")
plt.plot( [m, m], [0, 1], 'c--',label = 'moyenne')
plt.plot( [m-2*s/sqrt(n), m-2*s/sqrt(n)], [0, 1],'c',label = 'moyenne ± 2*sigma/sqrt(n)')
plt.plot( [m+2*s/sqrt(n), m+2*s/sqrt(n)], [0, 1],'c')
plt.grid(True)
plt.legend()
plt.show()


print('Normale')
E = [ [normale(0, 1) for _ in range(n)] for _ in range(N) ]
Moyennes = [ moyenne(e) for e in E]
Ecart = [ ecart_type(e) for e in E]
m = 0
s = 1
print(proportion_intervalle(Moyennes, Ecart, m))
print('')


plt.figure('Normale')
x, y = frequences_cumulées(Moyennes)
plt.plot(x,y, label="Frequences cumulées")
plt.plot( [m, m], [0, 1], 'c--',label = 'moyenne')
plt.plot( [m-2*s/sqrt(n), m-2*s/sqrt(n)], [0, 1],'c',label = 'moyenne ± 2*sigma/sqrt(n)')
plt.plot( [m+2*s/sqrt(n), m+2*s/sqrt(n)], [0, 1],'c')
plt.grid(True)
plt.legend()
plt.show()




print('binomiale')
E = [ [binomiale(100,0.2) for _ in range(n)] for _ in range(N) ]
Moyennes = [ moyenne(e) for e in E]
Ecart = [ ecart_type(e) for e in E]
m = 20
s = 4
print(proportion_intervalle(Moyennes, Ecart, m))
print('')


plt.figure('binomiale')
x, y = frequences_cumulées(Moyennes)
plt.plot(x,y, label="Frequences cumulées")
plt.plot( [m, m], [0, 1], 'c--',label = 'moyenne')
plt.plot( [m-2*s/sqrt(n), m-2*s/sqrt(n)], [0, 1],'c',label = 'moyenne ± 2*sigma/sqrt(n)')
plt.plot( [m+2*s/sqrt(n), m+2*s/sqrt(n)], [0, 1],'c')
plt.grid(True)
plt.legend()
plt.show()




print('uniforme')
E = [ [uniforme(-1,1) for _ in range(n)] for _ in range(N) ]
Moyennes = [ moyenne(e) for e in E]
Ecart = [ ecart_type(e) for e in E]
m = 0
s = sqrt(1/3)
print(proportion_intervalle(Moyennes, Ecart, m))
print('')


plt.figure('uniforme')
x, y = frequences_cumulées(Moyennes)
plt.plot(x,y, label="Frequences cumulées")
plt.plot( [m, m], [0, 1], 'c--',label = 'moyenne')
plt.plot( [m-2*s/sqrt(n), m-2*s/sqrt(n)], [0, 1],'c',label = 'moyenne ± 2*sigma/sqrt(n)')
plt.plot( [m+2*s/sqrt(n), m+2*s/sqrt(n)], [0, 1],'c')
plt.grid(True)
plt.legend()
plt.show()









