Soit n un entier et p \in [0;1] . On souhaite écrire un programme Python pour calculer la probabilité \mathbb{P}( | S_n - p \times n | > \sqrt{n}) .
On suppose la fonction \verb/sqrt/ du package \verb/math/ importée au début du programme.
Soit n un entier et p \in [0;1] .
Quelle est l'expression de \mathbb{P}(X = k) si X est une variable aléatoire qui suit une loi binomiale \mathcal{B}(n;p) et k un entier ?
La loi binomiale modélise la fréquence du nombre de succès obtenus lors de la répétition de plusieurs expériences aléatoires identiques et indépendantes.
La probabilité de k succès dans une répétition de n expériences est donc de :
\mathbb{P}(X = k)= {n \choose k} \, p^k (1-p)^{n-k}
Soit n un entier et p \in [0;1] .
Quelle est l'espérance d'une loi binomiale \mathcal{B}(n;p) ?
L'espérance est le nombre moyen de succès. Dans le cas d'une loi binomiale \mathcal{B}(n;p) elle s'écrit :
p \times n
Soit n un entier et p \in [0;1] . On note S_n la variable aléatoire qui suit la loi binomiale \mathcal{B}(n;p) .
Que représente la probabilité \mathbb{P}( | S_n - p \times n | > \sqrt{n}) ?
Pour une loi binomiale \mathcal{B}(n;p) , l'espérance se calcule p \times n . C'est le nombre moyen de succès obtenus.
La valeur | S_n - p \times n | représente donc l'écart absolu entre le nombre de succès obtenus et le nombre de succès moyen.
Enfin, la probabilité \mathbb{P}( | S_n - p \times n | > \sqrt{n}) représente la probabilité d'avoir un écart inférieur à \sqrt{n} succès de l'espérance.
Soit n un entier et p \in [0;1] . On note S_n la variable aléatoire qui suit la loi binomiale \mathcal{B}(n;p) et k un entier.
Quel algorithme permet de calculer la probabilité \mathbb{P}( | S_n - p \times n | > \sqrt{n}) ?
On commence par définir une fonction binomiale qui retourne le nombre de succès à l'aide d'une compréhension de liste Python. Le nombre de succès est exactement la somme de la liste qui contient 1 en cas de succès et 0 en cas d'échec.
Pour calculer la probabilité \mathbb{P}( | S_n - p \times n | > sqrt{n}) , on va générer N tirages d'une loi binomiale et observer les tirages favorables. La loi des grands nombres permet d'estimer que la fréquence observée converge vers la probabilité théorique.
L'algorithme qui permet de calculer la probabilité \mathbb{P}( | S_n - p \times n | > sqrt{n}) est donc :
def binomiale(n, p):
return sum(1 if random() < p else 0 for _ in range(n))
def proba(N, n, p):
esperance = n*p
tirage = [binomiale(n,p) for _ in range(N)]
p = sum([ 1 if abs(tirage[i] - esperance) > sqrt(n) else 0 for i in range(N)])
return p