bts:python:loiexponentielle
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| bts:python:loiexponentielle [2023/02/14 15:54] – créée goupillwiki | bts:python:loiexponentielle [2024/02/27 09:33] (Version actuelle) – [Simuler un grand nombre de parties et visualiser] goupillwiki | ||
|---|---|---|---|
| Ligne 29: | Ligne 29: | ||
| def perdu(p): | def perdu(p): | ||
| - | | + | |
| + | p: probabilité de perdre à chaque tour | ||
| renvoie True avec la probabilité p | renvoie True avec la probabilité p | ||
| - | | + | |
| if p > random(): | if p > random(): | ||
| return True | return True | ||
| Ligne 42: | Ligne 43: | ||
| ===== Simuler une partie ===== | ===== 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. | + | 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. On s' |
| Ajoutez à la suite : | Ajoutez à la suite : | ||
| <code python> | <code python> | ||
| - | def simulation(p): | + | def T(p): |
| - | | + | |
| + | p: probabilité de perdre à chaque tour | ||
| simule une partie et renvoie le nombre de lancer gagnants | simule une partie et renvoie le nombre de lancer gagnants | ||
| - | | + | |
| n = 0 | n = 0 | ||
| while ... | while ... | ||
| Ligne 57: | Ligne 59: | ||
| </ | </ | ||
| + | Vous pouvez tester. | ||
| + | ===== Simuler un grand nombre de parties et visualiser ===== | ||
| + | Si on simule, cela donne quelque chose comme : | ||
| + | <code python> | ||
| + | >>> | ||
| + | 10 | ||
| + | </ | ||
| + | Dans cet exemple, on a survécu 10 tours. Cela ne dit pas grand chose. Il faut répéter l' | ||
| + | <WRAP info> | ||
| + | <code python> | ||
| + | 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' | ||
| + | # simulation de N parties | ||
| + | essais = [T(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, | ||
| + | plt.title(' | ||
| + | plt.xticks(valeurs) | ||
| + | plt.xlabel(' | ||
| + | plt.ylabel(' | ||
| + | plt.show() | ||
| + | </ | ||
| + | On reconnait bien une forme exponentielle : $\lambda \cdot \text{e}^{-\lambda\cdot t}$. | ||
| + | ===== Valeur de lambda ===== | ||
| + | Pour trouver la valeur de $\lambda$ correspondant à notre simulation, on peut exploiter la formule $E(T) = \frac{1}{\lambda}$. | ||
| + | Donc en prenant la moyenne de notre simulation et en inversant, on aura $\lambda$. | ||
| + | <code python> | ||
| + | # à mettre avant le tracer du graphique | ||
| + | moyenne = np.mean(essais) | ||
| + | L = 1/moyenne | ||
| + | print(1/ | ||
| + | # on peut ajouter un graphique | ||
| + | # juste avant le plt.bar : | ||
| + | plt.plot(valeurs, | ||
| + | </ | ||
| + | Vous constatez que la courbe suit à peu près les barres. | ||
| - | + | On peut montrer que la bonne valeur pour $\lambda$ est : '' | |
| - | On sait qu'à chaque tour, on a la probabilité | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | en voir le fonctionnement, | + | |
| - | + | ||
| - | + | ||
| - | + | ||
bts/python/loiexponentielle.1676386455.txt.gz · Dernière modification : de goupillwiki
