Programmer en Python en 2nde

Listes et probabilités

Crédits

Toute la structure html/css/js et une grande partie du contenu ont été réalisés par Nicolas Buyle-Bodin professeur au lycée Lacassagne, avec l'aide de Jean-Manuel Mény, professeur au lycée de la plaine de l'Ain. Ils ont travaillé pendant plusieurs centaines d'heures pour créer un site de formation à destination des enseignants du secondaire de l'académie de Lyon d'une grande qualité visible sur le portail Mathématiques du site académique. Ils ont eu la gentillesse de placer leur code source sous licence Creative Commons BY-NC-SA Respect de la Paternité - Pas d'utilisation commerciale - Partage des conditions initiales à l'identique..

Nous les en remercions chaleureusement.

Approximation d'une loi de probabilité par une distribution de fréquences

La fonction randint du module random, retourne un entier aléatoire compris entre les deux bornes incluses passées en paramètres.


			
			
  1. Dans Pyzo, créer un nouvel onglet de l'éditeur de programme Python et l'enregistrer sur le disque dans le dossier Python2nde précédemment créé, sous le nom de fichier liste_proba.py. On peut inclure la date du jour dans le nom de fichier, c'est pratique pour l'indexation.
  2. Dans le fichier liste_proba.py, saisir et compléter la fonction ci-dessous pour qu'elle retourne la distribution de fréquences obtenue lors de la répétition de n lancers d'un dé équilibré à 6 face numérotées de 1 à 6 dont on note la face supérieure.
    
    from random import randint
    
    def echantillon_de(n):
        #effectif[0] contiendra le nombre de face 1 sur n lancers de dé à 6 faces
        effectif = [0] * 6
        for i in range(n):
            lancer = randint(1, 6)
            effectif[lancer - 1] = effectif[lancer - 1] + 1
        frequence = effectif
        #calcul des fréquences à compléter
        return frequence
    
    print(echantillon_de(1000))
    			
    							
  3. La fonction random du module random, retourne un nombre aléatoire pris dans l'intervalle $[0;1[$.
    
    			
    			
    • Saisir et compléter le code de la fonction ci-dessous, qui doit simuler le numéro de la face supérieure obtenue lors du lancer d'un dé à 6 faces déséquilibré tel que la probabilité de la face $6$ est $0,4$, celle de la face $5$ est $0,2$, les autres faces ayant la même probabilité.
    • 
      from random import random
      
      def de_truque():
          lancer = random()
          if lancer < 0.4:
              return 6
          elif lancer < 0.6:
              return 5
          #à compléter
      			
      							
    • Sur le modèle de la fonction echantillon_de(n), écrire une fonction echantillon_de_truque(n) qui retourne la distribution de fréquences obtenue sur un échantillon de n lancers du dé truqué modélisé à la question précédente.
  • Corrigé question 1
  • Corrigé question 2 Partie 1
  • Corrigé question 2 Partie 2

			
			

			
			

			
			

Le lièvre et la tortue

Une piste de course comporte six cases entre la case Départ et la case Arrivée. Le lièvre et la tortue partent de la case Départ, à chaque tour on lance un dé équilibré à six faces et si la face est égale à 6 le lièvre avance directement jusqu'à la case Départ sinon la tortue avance d'une case.

Départ 1 2 3 4 5 6 Arrivée
  1. Dans le fichier liste_proba.py, saisir et compléter la fonction ci-dessous pour qu'elle retourne le gagnant lors d'une course entre le lièvre et la tortue. La fonction retournera 1 si le lièvre gagne et par 0 sinon.
    
    from random import randint
    
    def course():
        tortue = 0
        de = 0
        #on doit effectuer au moins un tour de boucle
        while tortue < 6 and ....... : #à compléter 
            de = randint(1, 6)
            #à compléter 
        if .......: #à compléter 
            return 1
        else:
            return 0
    							
  2. A la suite du fichier, écrire une fonction en langage Python qui respecte la spécification suivante :
    Paramètres un entier n représentant la taille de l'échantillon
    Valeur renvoyée La fréquence de victoires du lièvre sur un échantillon de n courses.
    Peut-conjecturer que la course est équilibrée ?
  3. Démontrer la conjecture établie à la question précédente avec un calcul de probabilité.

			
			
  • Corrigé question 1
  • Corrigé question 2
  • Corrigé question 3

			
			

			
			

Lors d'une course, la tortue gagne si le dé est lancer est 6 fois et que le numéro de la face est toujours inférieur à 6. Avec un arbre de probabilité comme ci-dessous, on obtient que la probabilité de victoire de la tortue est de $\left(\frac{5}{6}\right)^{6} \approx 0,3349$ et que celle du lièvre est de $1 - \left(\frac{5}{6}\right)^{6} \approx 0,6651$.

D'après la loi faible des grands nombres, la probabilité que la fréquence de victoires du lièvre sur un échantillon de n courses, soit éloignée de la probabilité $1 - \left(\frac{5}{6}\right)^{6}$, est d'autant plus faible que la taille n de l'échantillon est grande.

Minimum du lancer de $n$ dés

En Python, la fonction min retourne le minimum d'une séquence de nombres.


In [1]: a = 732

In [2]: b = 621

In [3]: c = 502

In [4]: min(a, b)
Out[4]: 621

In [5]: min(a, b, c)
Out[5]: 502

In [6]: L = [852,821,843,933]

In [7]: min(L)
Out[7]: 821

							
  1. A la suite du fichier liste_proba.py, écrire une fonction qui vérifie la spécification suivante :
    Paramètres un entier n
    Valeur renvoyée le minimum des faces supérieures lors du lancer de n dés à 6 faces (numérotées de 1 à 6) identiques et équlibrés
  2. Écrire une fonction qui vérifie la spécification suivante :
    Paramètres deux entiers m et n
    Valeur renvoyée la distribution de fréquences obtenue sur un échantillon de m réalisations du minimum de n dés à 6 faces identiques et équilibrés

			
			
  • Corrigé question 1
  • Corrigé question 2