Simuler un dé, puis une somme
Exercice · niveau 2 · mathématiques (ECT 1re année), chapitre 13 — Informatique et algorithmique · Simulation aléatoire
Énoncé
En n'utilisant que rd.random(), qui rend un nombre au hasard entre et , écrire une fonction de() qui simule un dé équilibré à six faces. Puis écrire un script qui estime, sur essais, la probabilité que la somme de deux dés vaille , et comparer à la valeur exacte.
Corrigé
La fonction. rd.random() tombe uniformément dans . En multipliant par , on obtient un nombre de ; sa partie entière vaut , , , , ou , chacune avec la même probabilité , puisque chacune correspond à un intervalle de longueur sur les . On ajoute pour obtenir les faces.
import numpy as np
import numpy.random as rd
def de():
return np.floor(6*rd.random()) + 1
L'estimation.
n = 10000
s = 0
for i in range(n):
if de() + de() == 7:
s = s + 1
print(s/n)
# environ 0.167
La valeur exacte. Les deux dés donnent couples également probables. La somme vaut pour , , , , et , soit couples :
La fréquence observée s'en approche à quelques millièmes près, ce qui est l'ordre de précision qu'on peut espérer de essais : deux décimales fiables, pas davantage.
Le point à retenir. Toute loi uniforme sur des entiers se fabrique à partir de rd.random() par une multiplication et une partie entière : c'est le seul générateur exigible, et il suffit. La borne haute est exclue, la borne basse incluse — d'où le + 1 qui ramène les faces de à .
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.