# -*- coding: utf-8 -*-
"""Chapitre 20 — Simulation stochastique de la décroissance radioactive.

À chaque pas de 1 s, chaque noyau restant se désintègre avec une
probabilité approximativement égale à lam, car lam est très petit.
Le script superpose la simulation à la loi N = N0 exp(-lam * t).
"""
import math
import random

import matplotlib.pyplot as plt


lam = 0.01   # constante radioactive (s^-1)
N0 = 2000    # noyaux présents à t = 0

proba = 0.005  # À COMPLÉTER : probabilité de désintégration pendant 1 s

ts = [0]     # dates (pas de 1 s)
Ns = [N0]    # nombres de noyaux restants
while Ns[len(Ns) - 1] > N0 / 100:
    n_desintegrations = 0
    for i in range(Ns[len(Ns) - 1]):
        if random.random() <= proba:
            n_desintegrations = n_desintegrations + 1
    Ns.append(Ns[len(Ns) - 1] - n_desintegrations)
    ts.append(ts[len(ts) - 1] + 1)

# ---- Tracé fourni, à ne pas modifier ---------------------------------
N_exact = []
for t in ts:
    N_exact.append(N0 * math.exp(-lam * t))

plt.plot(ts, Ns, ".", markersize=3, label="simulation (hasard)")
plt.plot(ts, N_exact, "-", label="loi du cours : $N_0\\,e^{-\\lambda t}$")
plt.xlabel("t (s)")
plt.ylabel("N (noyaux restants)")
plt.legend()
plt.grid(True, alpha=0.3)
plt.title("Décroissance radioactive : le hasard redonne la loi")
plt.show()
