import math
import random
import matplotlib.pyplot as plt

def simulation(listeval,listeprob):
        aleatoire=random.random()
        somme=0
        compteur=0
        if aleatoire==0:
            valeur=listeval[compteur]
        for p in listeprob:
            if (somme<aleatoire) and (aleatoire<somme+p):
                valeur=listeval[compteur]
            somme=somme+p
            compteur=compteur+1
        return valeur

def moyenne_tableau(liste1,liste2):
    somme=0
    n=len(liste1)
    for k in range(n):
        somme=somme+(liste1[k])*(liste2[k])
    return somme

def moyenne_liste(liste1):
    somme=0
    n=len(liste1)
    for k in range(n):
        somme=somme+(liste1[k])
    moy=somme/n
    return moy

def ecarttype(liste1,liste2):
    m=moyenne_tableau(liste1,liste2)
    n=len(liste1)
    somme=0
    for k in range(n):
        somme=somme+((liste1[k]-m)**2)*(liste2[k])
    e=math.sqrt(somme)
    return e

def nuage_moyenne1(N,liste1,liste2):
    for i in range(1,N+1):
        echant=[simulation(liste1,liste2) for r in range(500)]
        m=moyenne_liste(echant)
        plt.plot([i],m,'b.')
    plt.xlabel("échantillon n°")
    plt.ylabel("moyenne")
    plt.show()

def nuage_moyenne2(N,liste1,liste2):
    esperance=moyenne_tableau(liste1,liste2)
    sigma=ecarttype(liste1,liste2)
    for i in range(1,N+1):
        echant=[simulation(liste1,liste2) for r in range(500)]
        m=moyenne_liste(echant)
        plt.plot([i],m,'b.')
    plt.plot([0, N], [esperance , esperance], 'g-')
    plt.plot([0, N], [esperance-(2*sigma/(math.sqrt(500))), esperance-(2*sigma/(math.sqrt(500)))], 'r-')
    plt.plot([0, N], [esperance+(2*sigma/(math.sqrt(500))), esperance+(2*sigma/(math.sqrt(500)))], 'r-')
    plt.xlabel("échantillon n°")
    plt.ylabel("moyenne")
    plt.show()
    
 

