Exercices de programmation en Python
Le Hasard et les Probabilités*
Avec un dé
Exercice 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")
- 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:
- 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")
- 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:
- Le programme suivant permet de "garder" la suite des résultats obtenus en les stockant dans une
liste.
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 listefrom 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])
L
).
En augmentant le nombre de lancers (10, 100, 1000, …) donner une estimation de la probabilité d'obtenir deux 6 consécutifs - Reprendre la question précédente avec trois 6 consécutifs.
- Combien de lancers faut-il simuler pour pouvoir observer des suites (consécutives) de cinq 6 ?
Aucun 6
Exercice 4:
- Que font les programmes suivant ?
(voir éventuellement les liste en python).
etfrom random import randint L=[randint(1,6),randint(1,6),randint(1,6)] print(L)
from random import randint L=[] for i in range(3): L.append(randint(1,6)) print(L)
- 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 ?).
- 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 ? - 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)
- É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.
- 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.
- 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.