Exercices de programmation en Python

Le Hasard et les Probabilités*



Avec un dé

Exercice 1:
  1. Que fait le programme suivant ? Qu'affiche-t'il ?
    from random import randint 
    d=randint(1,6)
    if (d==6): 
       print("Gagné")
    else:
       print("Dommage")
    
  2. En s'aidant du programme précédent, créer un programme qui lance 10 fois un dé et qui compte le nombre de 6 obtenus (utiliser une boucle for avec la fonction range)
    Calculer alors, et afficher, le pourcentage de 6 obtenus. Que devient ce pourcentage lorsqu'on augmente le nombre de lancers (10 lancers, puis 100, 1000, …)

Avec deux dés

Exercice 2:
  1. Modifier le programme suivant afin qu'il simule le lancer de deux dés.
    Le programme affichera "Gagné" lorsqu'on obtient 7 en ajoutant les chiffres obtenus sur chaque dé.
    from random import randint 
    d=randint(1,6)
    if (d==6): 
       print("Gagné")
    else:
       print("Dommage")
    
  2. Modifier maintenant ce programme pour qu'il effectue 10 séries de lancers de 2 dés.
    Quelle est la fréquence d'apparition du résultat 7 ?

    Que devient cette fréquence sur 100 séries, 1000 séries, … ?
    Quelle estimation de la probabilité d'apparition du 7 peut-on proposer ?

Des suites de 6

Exercice 3:
  1. Le programme suivant permet de "garder" la suite des résultats obtenus en les stockant dans une liste.
    from random import randint 
    
    L=[]
    for i in range(10):
        d=randint(1,6)
        L.append(d)
    
    # On peut afficher tous les résultats 
    print(L)
    
    # ou l'un après l'autre avec une boucle, 
    # len(L) pour "length(L)": longueur de L
    print("Longueur de L:",len(L))
    for i in range(len(L)):
        print(L[i])
    
    # ou juste le 3ème par exemple
    #  (attention: L[0] est le 1er élément...)
    print(L[2])
    
    Compléter (ou utiliser une partie de) ce programme de façon à compter le nombre de fois qu'il y a deux 6 consécutifs sur 10 lancers (donc dans la liste L).
    En augmentant le nombre de lancers (10, 100, 1000, …) donner une estimation de la probabilité d'obtenir deux 6 consécutifs
  2. Reprendre la question précédente avec trois 6 consécutifs.
  3. Combien de lancers faut-il simuler pour pouvoir observer des suites (consécutives) de cinq 6 ?

Aucun 6

Exercice 4:
  1. Que font les programmes suivant ?   (voir éventuellement les liste en python).
    from random import randint 
    L=[randint(1,6),randint(1,6),randint(1,6)]
    print(L)
    
    et
    from random import randint 
    
    L=[]
    for i in range(3):
        L.append(randint(1,6))
    print(L)
    
  2. En utilisant un de ces programmes, en écrire un qui simule le lancer de cinq dés et affiche "Gagné" si cinq 6 ont été obtenus (jouez-vous au Yams parfois ?).
  3. Modifier le programme précédent pour répéter 10 fois le lancer de cinq dés, et compter le nombre de fois que cinq 6 ont été obtenus.

    Est-ce fréquent / probable / possible / rare de n'obtenir que des 6 sur cinq lancers ?
  4. Modifier le programme pour, cette fois, compter le nombre de fois qu'aucun 6 n'a été obtenu.
    Estimer la probabilité de n'obtenir aucun 6 en lançant cinq dés.
Exercice 5:
La fonction random, de la bibliothèque random, permet de tirer un nombre aléatoire dans l'intervalle [0;1[.
from random import random
x=random()
print(x)
  1. Écrire un programme tirant de tels nombres aléatoires, entre 0 et 1, jusqu'à ce que la somme des nombres tirés dépasse 10. Afficher le nombre de tirages qui ont été faits.
  2. Modifier le programme précédent pour que l'expérience soit faite 10 fois, et affiche à chaque fois le nombre de tirages effectués pour que la somme dépasse 10.
  3. En moyenne, combien de nombres faut-il tirer entre 0 et 1 pour que leur somme dépasse 10 ?


Top Programmation en python
* référence à l'essai "Le Hasard et la Nécessité" du biologiste Jacques Monod paru en 1970, et qui place le hasard au centre de la biologie moderne.