Ceci est une ancienne révision du document !
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Table des matières
Simuler une loi exponentielle
Dans ce TP on se propose de simuler une loi exponentielle avec Python.
La loi exponentielle est utilisée dans le cadre de durée de vie. On fabrique une ampoule et on se demande combien de temps elle va tenir. La durée de vie de l'ampoule est aléatoire, c'est donc une variable aléatoire et on peut s'interroger sur sa densité de probabilité.
Jeu de stop ou encore
Pour bien comprendre le fonctionnement de la loi exponentielle, on va passer par un jeu.
Dans ce jeu, à chaque tour, on jette un dé (ou une pièce, ou un osselet, ou ce qu'on veut…)
Par exemple on pourrait dire qu'à chaque tour on jette le dé et que si on fait 6, on a perdu. On dirait alors qu'on la probabilité $p = \frac{1}{6}$ de perdre à chaque tour.
De façon plus générale, on supposera qu'on a la probabilité $p$ de perdre à chaque tour – c'est à dire $p$ pas forcément égal à $\frac{1}{6}$.
On s'intéresse au nombre de tours où on a survécu.
Par exemple, si le joueur fait, avec le dé, la séquence 2, 1, 3, 3, 5, 1, 4, 2, 6, il a tenu 8 tours et perdu au 9e. Dans ce cas, la variable aléatoire prendra la valeur 8
Simuler le dé
On réalise d'abord une fonction qui simule le dé (ou tirage de cartes, ou autre chose…)
On veut écrire une fonction perdu(p) qui renvoie vrai avec la probabilité p.
from random import random
def perdu(p):
'''
renvoie True avec la probabilité p
'''
if p > random():
return True
else:
return False
Entrez ce code et vérifiez que perdu(0.5) renvoie True à peu près une fois sur deux.
Simuler une partie
Une partie est une succession de lancers de dés. Chaque fois qu'on gagne, on compte +1. Quand c'est perdu, c'est fini.
Ajoutez à la suite :
def simulation(p):
'''
simule une partie et renvoie le nombre de lancer gagnants
p= probabilité de perdre à chaque tour
'''
n = 0
while ...
n = ...
return n
Vous pouvez tester.
Simuler un grand nombre de parties et visualiser
Si on simule, cela donne quelque chose comme :
>>> simulation(0.2) 10
Dans cet exemple, on a survécu 10 tours. Cela ne dit pas grand chose. Il faut répéter l'expérience et compter les résultats pour avoir une idée de la répartition des scores et de leur probabilité.
Dans le code à suivre, inutile de recopier les commentaires.
import matplotlib.pyplot as plt # pour le graphique
import numpy as np # contient une fonction de comptage
p = 0.2 # par exemple...
N = 10000 # nombre d'essais
# simulation de N parties
essais = [simulation(p) for i in range(N)]
# comptage des scores obtenus et des effectifs correspondants
valeurs, effectifs = np.unique(essais , return_counts=True)
# on préfère des fréquences :
freqs = [e/N for e in effectifs]
# figure
plt.figure()
plt.bar(valeurs, freqs)
plt.title('Répartition des scores')
plt.xticks(valeurs)
plt.xlabel('durée de vie')
plt.ylabel('fréquence')
plt.show()
On sait qu'à chaque tour, on a la probabilité $p$ de perdre.
en voir le fonctionnement, nous allons
