Outils pour utilisateurs

Outils du site


bts:python:loiexponentielle

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
bts:python:loiexponentielle [2023/02/14 15:54] – créée goupillwikibts: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'intéresse au nombre de tours gagnés, donc à la durée de vie de la partie. On l'appelle ''T''.
  
 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:
 </code> </code>
  
 +Vous pouvez tester.
  
 +===== Simuler un grand nombre de parties et visualiser =====
  
 +Si on simule, cela donne quelque chose comme :
 +<code python>
 +>>> T(0.2)
 +10
 +</code>
  
 +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é.
  
 +<WRAP info>Dans le code à suivre, inutile de recopier les commentaires.</WRAP>
  
 +<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'essais
  
 +# 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, freqs)
 +plt.title('Répartition des scores')
 +plt.xticks(valeurs)
 +plt.xlabel('durée de vie')
 +plt.ylabel('fréquence')
 +plt.show()
 +</code>
  
 +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/moyenne)
  
 +# on peut ajouter un graphique
 +# juste avant le plt.bar :
 +plt.plot(valeurs, [L*np.exp(-L*v) for v in valeurs], 'r')
 +</code>
  
 +Vous constatez que la courbe suit à peu près les barres.
  
- +On peut montrer que la bonne valeur pour $\lambdaest : ''L = -np.log(1 - p)''. Vous pouvez essayer.
-On sait qu'à chaque tour, on a la probabilité $pde perdre. +
- +
- +
- +
- +
-en voir le fonctionnement, nous allons  +
- +
- +
- +
bts/python/loiexponentielle.1676386455.txt.gz · Dernière modification : de goupillwiki