Probabilités#
Certaines probabilités peuvent être calculées exactement. Une simulation permet aussi de les estimer en répétant un grand nombre de fois la même expérience aléatoire.
Dès la seconde
Produire un résultat aléatoire#
Le module random contient des fonctions liées au hasard. Il faut l’importer avant de les utiliser.
Chaque cellule de cette page réécrit import random afin de pouvoir être exécutée indépendamment.
random.randint(a, b) choisit un entier entre a et b, bornes incluses.
Après plusieurs exécutions, les valeurs 2 et 10 ne doivent jamais apparaître.
Simuler un dé ou une pièce#
Une fonction peut représenter une expérience aléatoire. Chaque appel réalise alors un nouveau lancer et renvoie son résultat.
Peut-on obtenir 0 ? Peut-on obtenir 7 ? Les bornes choisies dans randint répondent directement à ces questions.
Pour un pile ou face, on peut coder les deux issues par 0 et 1.
Répéter une expérience#
Une boucle permet d’effectuer plusieurs lancers en une seule exécution.
Le nombre de lancers peut être modifié sans changer le reste du programme.
Compter un événement#
Le compteur augmente uniquement lorsque l’événement étudié se produit.
Plusieurs exécutions donnent des compteurs différents : les vingt lancers ne produisent pas toujours la même série de résultats.
Passer du compteur à la fréquence#
La fréquence d’un événement est :
La probabilité exacte vaut \(\frac16\approx0{,}167\). Remplace 1000 par 20, puis par 10 000. Avec davantage d’essais, la fréquence fluctue encore, mais elle est généralement plus proche de la probabilité théorique.
Somme de deux dés#
On peut maintenant estimer la probabilité d’obtenir une somme supérieure ou égale à 8.
Un calcul exact donne \(\frac{15}{36}=\frac5{12}\approx0{,}417\). Compare cette valeur à plusieurs simulations.
Approcher pi par la méthode de Monte-Carlo#
On choisit des points au hasard dans le carré \([-1;1]\times[-1;1]\). Son aire vaut 4. Le disque de centre O et de rayon 1, contenu dans le carré, a pour aire \(\pi\).
La proportion de points situés dans le disque est donc proche de \(\frac{\pi}{4}\).
La condition mathématique est \(x^2+y^2\leqslant1\) ; en Python, elle s’écrit
x**2 + y**2 <= 1.
random.uniform(-1, 1) choisit un nombre décimal entre −1 et 1. Augmente essais et observe à la fois l’amélioration habituelle de l’approximation et les fluctuations qui subsistent.
Exercices#
Exercice 1
Écrire une fonction nombre_faces(n) qui simule n lancers d’une pièce et renvoie le
nombre de faces obtenues. L’utiliser pour 20 lancers et afficher le résultat.
Exercice 2
Écrire une fonction frequence_quatre(n) qui simule n lancers d’un dé et renvoie la
fréquence d’apparition du nombre 4. L’utiliser pour 100 lancers et afficher le résultat.
Exercice 3
Écrire une fonction frequence_somme_sept(n) qui simule n lancers de deux dés et renvoie
la fréquence de l’événement « obtenir une somme égale à 7 ». L’utiliser pour 200 essais et
afficher le résultat.
Dans le parcours