• Aucun résultat trouvé

TP – Simulation avec Python

N/A
N/A
Protected

Academic year: 2021

Partager "TP – Simulation avec Python"

Copied!
2
0
0

Texte intégral

(1)

TP – Simulation avec Python

Lorsqu’il est difficile de déterminer la loi de probabi- lité d’une expérience aléatoire, on peut procéder à sa simulation un grand nombre de fois sur ordinateur et prendre les fréquences observées des issues comme probabilités.

1. Principe de la simulation

Considérons une urne qui contient 7 boules noires et 3 boules blanches. On tire au hasard une boule dans l’urne, on note sa couleur, puis on la remet dans l’urne.

1. On tire une boule dans l’urne. Quelle est la proba- bilité qu’elle soit blanche ?

Nous allons à présent réaliser une simulation de l’expérience précédente en Python.

Pour cela on utilise le module random (« hasard » en anglais) de Python.

La fonction random.randint(a,b) permet de générer un réel entier entre et (compris).

Si l’on prend un entier entre 1 et 10, il y a 30 % de chance qu’il soit inférieur ou égal à 3, on peut consi- dérer que dans ce cas-là, on a tiré une boule blanche, et que sinon on a tiré une boule noire.

1 2 3 4 5 6 7 8 9 10

import random def tirage():

a=random.randint(1,10) if a<=3:

return "B"

else:

return "N"

Simulons un tirage dans la console :

>>> tirage()

'N'

Si l’on effectue un grand nombre de tirages, on s’attend à avoir environ 30 % de « B » et 70 % de

« N ».

Vérifions cela, par exemple avec 1000 tirages.

c=0

for k in range(1000):

t=tirage() if t=="B":

c=c+1 print(c)

2. Que contient à la fin de l’exécution de l’algorithme précédent ? est un compteur qui contient le nombre de boules blanches obtenues sur 1000 tirages.

3. Exécuter 10 fois l’algorithme précédent et indi- quer la fréquence de boules blanches observées.

Est-ce cohérent avec le protocole ? Oui, on ob- serve « autour » de 30 % de boules blanches.

2. Écart entre deux dés

On lance deux dés, et on observe l’écart entre les deux numéros obtenus.

Par exemple si les dés ont donné 3 et 5, le résultat de l’expérience aléatoire est 2.

4. Donner l’univers de cette expérience aléatoire.

.

5. Compléter la fonction suivante pour qu’elle si- mule l’expérience.

def ecart():

a=random.randint( , ) b=random.randint( , ) e=

return e

6. On veut calculer la fréquence d’apparition de cha- cune des issues si l’on répète 1000 fois l’expérience.

Pour cela, on crée six compteur (un par issue), qu’on initialise à 0. Compléter l’algorithme ci- dessous et l’exécuter.

e0,e1,e2,e3,e4,e5=0,0,0,0,0,0 for k in range(1000):

e=ecart() if e==0:

e0=e0+1 if e==1:

...

print(e0,e1,e2,e3,e4,e5)

7. Indiquer les fréquences observées de chacune des issues sur ces 1000 tirages.

30 %

(2)

Issue

Fréquence

8.

Comparer les fréquences observées et les probabi- lités calculées en cours.

3. Problème du Grand Duc de Toscane

Un jeu en vogue à la cour de Florence au début du 17ème siècle consistait à lancer trois dés cubiques équilibrés et à faire la somme des numéros des trois faces.

Le Duc observa que la somme 10 avait tendance à apparaître plus souvent que 9, alors qu’il y a autant de possibilité d’écrire 9 et 10 comme somme de trois numéros de face.

9. Écrire une fonction duc() qui simule le lancer de trois dés et retourne la somme la somme obtenue.

10. Sur 10 000 lancers, calculer la fréquence de 9 et de 10 apparus. Le faire 4 fois et porter les résultats dans le tableau ci-dessous.

Essai n° Fréquence de

l’issue 9 Fréquence de l’issue 10 1

2 3 4

11. Est-ce cohérent avec l’observation du Duc de Toscane ?

12. Écrire 9 et 10 comme somme de trois numéros de face.

13. Montrer que la probabilité d’obtenir la somme 9 est et celle d’obtenir la somme 10 est .

4. Roméo et Juliette

Roméo et Juliette se sont donnés rendez-vous entre 20 h et 21 h. Chacun a promis d’attendre l’autre 12 minutes si nécessaire, mais pas plus.

On suppose que Roméo et Juliette arrivent chacun au hasard entre 20 h et 21 h.

On souhaite déterminer une estimation de la probabi- lité que Roméo et Juliette se rencontrent.

L’heure d’arrivée est un réel compris entre 0 et 60 (60 exclu).

La fonction random.uniform(a,b) permet de générer un réel compris dans l’intervalle .

14. Compléter la fonction suivante pour qu’elle ren- voie « O » si la rencontre a lieu et « N » sinon.

def romeo():

a=random.uniform( , ) b=random.uniform( , ) if

return("O") else:

return("N")

15. Calculer la fréquence des rendez-vous qui réussis- sent sur 1000 entrepris.

16. Calculer l’aire de la bande hachurée ci-dessous et la comparer à la fréquence ci-dessus...

Références

Documents relatifs

Faire de mˆ eme avec les mˆ emes classes, en simulant une variable al´ eatoire suivant la loi normale centr´ ee r´ eduite avec grand, toujours avec la courbe repr´ esentative de

Construire la fonction rejet_disque(s) simulant s nombres suivant la loi uniforme sur le disque à l'aide de la loi uniforme sur un pavé.. Représenter graphiquement

Les fréquences observées sont les aires des rectangles rouges (et non les hauteurs de ces rectangles) afin de montrer le lien entre les probabilités et les aires par calcul

 Les  conditions  sont

He also developed an algorithm (the Metropolis algorithm or Metropolis-Hastings algorithm) for generating samples from the Boltzmann distribution, later generalized by W.K...

Tracer les histogrammes d’échantillons de plus en plus gros de réalisations de la loi U ([a, b]).. Tracer l’histogramme d’un échantillon de réalisations d’une loi

C’est ce que nous allons observer en simulant la croissance de ces cellules en fonction de différents ratios N 0 initiaux et des valeurs de r différentes. • Prendre en main le

— La fonction 1:NbrAléat donne une nombre décimal «au hasard» dans l’intervalle [0 ; 1[.. — La fonction 5:nbrAléatEnt (a,b) donne une nombre entier «au hasard»