Probabilités en Terminale avec la NumWorks
Créez un compte gratuit pour suivre votre avancement et reprendre où vous avez laissé.
Créer un compteLoi binomiale avec un grand nombre de répétitions
En Première, tu as appris à utiliser l'application Probabilités de la NumWorks pour calculer $P(X = k)$ et $P(X \leqslant k)$ avec une loi binomiale $\mathcal{B}(n,\,p)$. En Terminale, les exercices utilisent presque toujours des grandes valeurs de $n$ : sondages sur $1\,000$ personnes, contrôles qualité sur $500$ pièces, séries de $200$ lancers… L'app Probabilités gère sans broncher ces ordres de grandeur, et c'est elle qu'il faut sortir en priorité dès qu'un énoncé donne explicitement les paramètres $(n,\,p)$.
Pour ouvrir l'application, appuie sur , déplace-toi sur la vignette Probabilités avec les flèches, valide avec OK, puis choisis la loi binomiale dans la liste des lois discrètes.
Sondage sur 1 000 personnes : X suit B(1000 ; 0,52)
Un institut interroge $1\,000$ personnes prises au hasard dans une population où la proportion de partisans d'une mesure est $p = 0{,}52$. La variable aléatoire $X$ qui compte le nombre de personnes favorables suit la loi $\mathcal{B}(1000;\,0{,}52)$. Saisis $n = 1000$ et $p = 0.52$ dans l'étape 2 de l'application : le diagramme en bâtons s'affiche, centré sur l'espérance $np = 520$.
À l'étape 3, choisis le type $\mathbf{a \leqslant X}$ avec $a = 500$ : la calculatrice renvoie $P(X \geqslant 500) \approx 0{,}9027$. Autrement dit, dans plus de $90\%$ des sondages de cette taille, on observe au moins $500$ personnes favorables — un résultat qu'il aurait été lourd de calculer à la main avec la formule $\sum_{k=500}^{1000} \binom{1000}{k} 0{,}52^k\, 0{,}48^{1000-k}$.

Astuce
Pour ce type d'exercice, le couple invbinom (introduit en Première) reste très utile : il donne en une ligne l'intervalle de fluctuation à $95\%$. Sur le sondage précédent, $\text{invbinom}(0.025,\ 1000,\ 0.52) = 489$ et $\text{invbinom}(0.975,\ 1000,\ 0.52) = 551$ : la fourchette $[489\,;\,551]$ contient $X$ avec une probabilité d'au moins $95\%$, ce qui correspond à la marge d'erreur classique de $\pm 3$ points autour de $52\%$.
Calculer rapidement l'espérance et l'écart-type
Dès qu'on travaille sur une variable aléatoire $X \sim \mathcal{B}(n,\,p)$, deux indicateurs se calculent à la main : l'espérance $E(X) = np$ et la variance $V(X) = np(1-p)$, dont on déduit l'écart-type $\sigma(X) = \sqrt{np(1-p)}$. Plutôt que de les recalculer mentalement à chaque exercice, gagne du temps en les tapant directement dans l'application Calculs : la calculatrice te donne la valeur exacte ou approchée à la précision voulue.
| Ouvrir Calculs | → Calculs → OK |
| Taper $n \times p$ pour l'espérance | Donne $E(X)$ |
| Taper $\sqrt{n \times p \times (1-p)}$ pour l'écart-type | Donne $\sigma(X)$ |
Contrôle qualité sur X suit B(100 ; 0,5)
Une chaîne produit des pièces dont la moitié, en moyenne, satisfait à un test long. On en prélève $100$ ; soit $X$ le nombre de pièces validées. Alors $X \sim \mathcal{B}(100;\,0{,}5)$, $E(X) = 100 \times 0{,}5 = 50$ et $\sigma(X) = \sqrt{100 \times 0{,}5 \times 0{,}5} = 5$.
Tu peux aussi enchaîner $\text{binomcdf}(55,\ 100,\ 0.5) - \text{binomcdf}(44,\ 100,\ 0.5)$ pour obtenir $P(45 \leqslant X \leqslant 55) \approx 0{,}7287$ : autour de $73\%$ des prélèvements donnent un résultat à moins d'un écart-type de l'espérance.
Reprise du sondage : E(X) et σ(X) pour B(1000 ; 0,52)
$E(X) = 1000 \times 0{,}52 = 520$ et $\sigma(X) = \sqrt{1000 \times 0{,}52 \times 0{,}48}$. Saisis cette dernière expression dans Calculs : la NumWorks renvoie $\sigma(X) \approx 15{,}80$. La fourchette à un écart-type est donc $[504\,;\,536]$ ; la fourchette à deux écarts-types $[488\,;\,552]$ encadre presque exactement les bornes obtenues plus haut avec invbinom — c'est l'inégalité de concentration en action.

Simuler la loi des grands nombres en Python
L'inégalité de concentration affirme que la moyenne empirique $M_n = \dfrac{X_1 + X_2 + \dots + X_n}{n}$ d'un échantillon de variables indépendantes de même loi se rapproche de l'espérance $E(X)$ quand $n$ devient grand. C'est la loi des grands nombres. Pour l'observer sur la calculatrice, le plus simple est d'écrire un script Python court qui simule un grand échantillon et calcule sa moyenne.
Crée un script nommé lgn depuis l'application Python ( → Python → Ajouter un script → taper lgn en mode alpha verrouillé). Ouvre-le et saisis :
from random import random
def moyenne(n):
s = 0
for k in range(n):
if random() < 0.5:
s = s + 1
return s / n
La fonction moyenne(n) simule $n$ tirages d'une pièce équilibrée (codés $1$ pour pile, $0$ pour face) et renvoie la fréquence de piles obtenue. C'est une réalisation de $M_n$ pour la variable de Bernoulli $X$ de paramètre $0{,}5$.
| Console d'exécution | Sélectionner la console en bas de la liste des scripts → OK |
| L'import est automatique | Le script lgn.py est chargé via from lgn import * |
| Taper moyenne(10) puis EXE | Petit échantillon : résultat éloigné de $0{,}5$ |
| Taper moyenne(100) puis EXE | Échantillon moyen : on s'approche |
| Taper moyenne(10000) puis EXE | Grand échantillon : très proche de $0{,}5$ |
Trois ordres de grandeur, trois précisions
En lançant trois fois de suite la simulation, j'ai obtenu (les valeurs varient à chaque appel, le générateur est aléatoire) :
| $\text{moyenne}(10)$ | $0{,}3$ — écart de $0{,}2$ par rapport à $0{,}5$ |
| $\text{moyenne}(100)$ | $0{,}47$ — écart de $0{,}03$ |
| $\text{moyenne}(10000)$ | $0{,}5012$ — écart de $0{,}001$ |
L'écart à l'espérance diminue typiquement comme $\dfrac{1}{\sqrt{n}}$ : multiplier $n$ par $100$ divise l'écart attendu par $10$. C'est précisément ce que prédit l'inégalité de Bienaymé-Tchebychev appliquée à $M_n$.
Remarque
CAPTURE À GÉNÉRER — Console d'exécution Python affichant, sur trois lignes successives : « >>> moyenne(10) » suivi de $0.3$, « >>> moyenne(100) » suivi de $0.47$, « >>> moyenne(10000) » suivi de $0.5012$ (ou valeurs proches).
Touches : EXE après chaque appel pour exécuter.
Attention
La fonction random() du module Python renvoie un réel dans $[0\,;\,1[$, pas un entier. Pour simuler un succès de probabilité $p$, le test à écrire est random() < p. Ne confonds pas avec randint(a, b), qui renvoie un entier dans $[a\,;\,b]$ : tu pourrais aussi écrire la simulation avec randint(0, 1), mais il faut alors adapter le test.
Astuce
La même fonction moyenne(n) te permet d'illustrer la loi des grands nombres pour n'importe quelle probabilité de succès $p$ : remplace simplement la ligne if random() < 0.5 par if random() < p et ajoute p aux paramètres de la fonction. Tu obtiens une fonction réutilisable moyenne(n, p) que tu pourras appeler avec n'importe quelle valeur de $p$ rencontrée en exercice.
Tester l'inégalité de Bienaymé-Tchebychev
L'inégalité de Bienaymé-Tchebychev majore la probabilité que $X$ s'éloigne de son espérance de plus de $\delta$ :
C'est une majoration grossière : elle est toujours vraie, mais souvent très en-dessous de la borne donnée. Une simulation Python permet de vérifier l'inégalité en comparant la fréquence empirique de l'événement $|X - E(X)| \geqslant \delta$ à la borne théorique. Crée un script bt et saisis :
from random import random
def frequence(n, p, delta, N):
nb = 0
for k in range(N):
s = 0
for i in range(n):
if random() < p:
s = s + 1
if abs(s - n*p) >= delta:
nb = nb + 1
return nb / N
La fonction simule $N$ réalisations indépendantes de $X \sim \mathcal{B}(n, p)$ et compte la proportion de cas pour lesquels $|X - np| \geqslant \delta$. C'est une estimation de $P(|X - E(X)| \geqslant \delta)$ par la fréquence observée — on retombe sur la loi des grands nombres, appliquée cette fois à l'événement.
Vérification sur X suit B(100 ; 0,5) avec δ = 10
Pour $X \sim \mathcal{B}(100;\,0{,}5)$, on a $V(X) = 25$. La borne théorique avec $\delta = 10$ vaut $\dfrac{25}{100} = 0{,}25$. La probabilité réelle, calculée avec la calculatrice ($\text{binomcdf}(40,\ 100,\ 0.5) + 1 - \text{binomcdf}(59,\ 100,\ 0.5) \approx 0{,}057$), est plus de quatre fois plus petite que la borne — c'est ce que veut dire « majoration grossière ».
Lance dans la console frequence(100, 0.5, 10, 1000) : la NumWorks met quelques secondes (cent mille tirages au total) puis renvoie une valeur autour de $0{,}06$, en parfait accord avec le calcul exact et bien en-dessous de la borne théorique $0{,}25$.
Remarque
CAPTURE À GÉNÉRER — Console d'exécution Python affichant, sur deux lignes successives : « >>> frequence(100, 0.5, 10, 1000) » suivi de $0.058$ (ou valeur proche), puis le calcul de vérification « >>> 25/100 » suivi de $0.25$ pour comparer à la borne.
Touches : EXE après chaque appel.
Attention
La fonction frequence effectue $n \times N$ tirages aléatoires : avec $n = 100$ et $N = 1000$, c'est $100\,000$ appels à random(). La NumWorks reste fluide tant qu'on garde $N \leqslant 2\,000$ et $n \leqslant 500$. Au-delà, le script peut prendre plus d'une minute à s'exécuter — coupe avec si tu as choisi des valeurs trop grandes.
Astuce
L'inégalité de concentration sur la moyenne empirique $M_n$ est le pendant de Bienaymé-Tchebychev : $P(|M_n - E(X)| \geqslant \delta) \leqslant \dfrac{V(X)}{n\delta^{2}}$. Pour la tester, modifie une seule ligne du script : remplace if abs(s - n*p) >= delta par if abs(s/n - p) >= delta. Avec n = 100, delta = 0.1 et $p = 0{,}5$, la borne théorique vaut $\dfrac{0{,}25}{100 \times 0{,}01} = 0{,}25$ et la fréquence observée tourne autour de $0{,}05$ — cohérent avec l'inégalité.