# -*- coding: utf-8 -*-
"""
Created on Mon Feb  9 12:22:08 2026

@author: pjaub
"""

from math import sqrt, log
import random as rd
import matplotlib.pyplot as plt
import numpy as np

plt.close('all')

def simul_X():
    return -1 + 2*rd.random()

mu = 0
N = 5000

S = 0
M = []

for n in range(1, N+1):
    S += simul_X()
    M.append(S/n)

plt.figure("Loi 1")
plt.plot(range(1, N+1), M)
plt.axhline(mu)
plt.xlabel("n")
plt.ylabel("M_n")
plt.show()

plt.figure("Loi 1 - plusieurs trajectoires")

for _ in range(10):

    S = 0
    M = []

    for n in range(1, N+1):
        S += simul_X()
        M.append(S/n)
    plt.plot(range(1, N+1), M)
plt.axhline(mu)
plt.show()



def simul_X():
    return 1 if rd.random() < 0.3 else 0

mu = 0.3
N = 5000

S = 0
M = []

for n in range(1, N+1):
    S += simul_X()
    M.append(S/n)

plt.figure("Loi 2")
plt.plot(range(1, N+1), M)
plt.axhline(mu)
plt.xlabel("n")
plt.ylabel("M_n")
plt.show()

plt.figure("Loi 2- plusieurs trajectoires")

for _ in range(10):
    S = 0
    M = []
    for n in range(1, N+1):
        S += simul_X()
        M.append(S/n)
    plt.plot(range(1, N+1), M)
plt.axhline(mu)
plt.show()



def simul_X():
    k = 1
    while rd.random() > 0.3:
        k += 1
    return k

mu = 1/0.3
N = 5000

S = 0
M = []
for n in range(1, N+1):
    S += simul_X()
    M.append(S/n)
    
plt.figure("Loi 3")
plt.plot(range(1, N+1), M)
plt.axhline(mu)
plt.xlabel("n")
plt.ylabel("M_n")
plt.show()

plt.figure("Loi 3 - plusieurs trajectoires")

for _ in range(10):
    S = 0
    M = []
    for n in range(1, N+1):
        S += simul_X()
        M.append(S/n)
    plt.plot(range(1, N+1), M)
plt.axhline(mu)
plt.show()