BCPST2
95 0 6 Variables aléatoires discrètes
©Exercice 1: Loi de Poisson
1◦) SoitXune variable aléatoire discrète. On noteX(Ω) ={xn;n∈N}. On pose, pour toutndeN: pn=P(X=xn) et sn=
n
X
k=0
pk.
On découpe l'intervalle[0 ; 1]en un certain nombre d'intervalles de la façon suivante :
•0 s•0
s•1
s•2
s3•. . .
•1
p0 p1 p2 p3
Pour simuler la variableX, on se donne un réeluchoisi aléatoirement dans[0 ; 1[. â si06u < p0=s0 : dans ce cas, on poseX=x0
â sinon, on cherchen∈N∗tel quesn−16u < sn: dans ce cas, on poseX=xn.
En utilisant cette méthode, écrire une fonction poisson(l) qui simule la loi de Poisson de paramètre`.
2◦) Écrire une fonction frequence(L) qui, étant donnée une liste d'entiers naturelsL, renvoie la listeFoù, pour toutkdeJ0 ;max(L)K, l'élémentF[k]est égal à la fréquence d'apparition de la valeurkdans la listeL.
3◦) Écrire une fonction represente_poisson(l,m) qui simulemfois la loi de Poisson de paramètre`et qui renvoie le diagramme des fréquences des valeurs obtenues. On pourra utiliser la fonction bar().
Comparer les hauteurs des bâtons avec les valeurs théoriques.
4◦) Un résultat (que l'on verra plus tard) nous dit que lorsque nest grand et λpas trop grand , la loi binomiale de paramètre
n,λ n
est proche de la loi de Poisson de paramètreλ.
En prenantλ= 5etn= 10,30,100, simuler 5000 fois une loi binomiale de paramètre n,λ
n
, dessiner le diagramme des fréquences des valeurs obtenues et comparer ces fréquences avec celles d'une loi de Poisson de paramètreλ.
Ce résultat nous donne une autre façon de simuler une loi de Poisson : on peut considérer qu'en simulant une loi binomiale de paramètre
n,λ n
avecngrand, on obtient une simulation d'une loi de Poisson de paramètreλ.
Solution:
Les écarts avec la vraie valeur viennent essentiellement du fait qu'on a simuler la loi binomiale (sur
5000 simulations) (et non pris les vraies valeurs), et non de la valeurs de n .
Solution:
from random import random from math import ∗
import matplotlib . pyplot as plt def poisson ( l ) :
u =random ( ) S = exp( − l ) F = 0
i = 0
while F < u : i += 1 F += S S ∗ = l/i return i − 1
def frequence ( L ) : m = max ( L ) F = [ 0 ] ∗ ( m+1)
f o r x in L :
F [ x ] += 1 f o r i in range ( m+1) :
F [ i ] = F [ i ] / le n ( L ) return F
def represente_poisson ( l , m ) :
L = [ poisson ( l ) f o r k in range ( m ) ] F = frequence ( L )
n = l e n ( F )
Th = [ exp( − l ) ∗ f l o a t ( l ∗∗ i ) /factorial ( i ) f o r i in range ( n ) ] plt . bar ( range ( l e n ( F ) ) , F , label= ' v a l e u r s simul é es ' )
plt . plot ( [ . 4 +k f o r k in range ( n ) ] , Th , color= ' red ' , linestyle=' ' , marker= ' o ' , ms=10,label= ' v a l e u r s th é o r i q u e s ' )
plt . legend ( ) plt . show ( ) def binomial ( n , p ) :
S = 0
f o r k in range ( n ) : u = random ( )
i f u<p :
S +=1 return S
def comparaison ( l ) :
valeur = [ 1 0 , 30 , 100 , 2000]
couleur = [ ' red ' , ' blue ' , ' yellow ' , ' green ' ] m=0 f o r i in range ( l en ( valeur ) ) :
n= valeur [ i ]
L= [ binomial ( n , f l o a t ( l ) /n ) f o r k in range (5000) ] F= frequence ( L )
m = max( m , len ( F ) )
plt . bar ( [ 0 . 2 ∗ ( i − 1) + k f o r k in range ( le n ( F ) ) ] , F , width
=.2 , color=couleur [ i ] , label= 'n='+s t r ( n ) )
Th = [ exp( − l ) ∗ f l o a t ( l ∗∗ i ) /factorial ( i ) f o r i in range ( m +1) ]
f o r i in range ( m+1) :
plt . plot ( [ i − 0.2 , i + 0 . 6 ] , [ Th [ i ] , Th [ i ] ] , color=' black ' , linewidth=3)
plt . legend ( ) plt . show ( )
2014-2015 page 2 sur 6 TSVP
©Exercice 2: Valeur moyenne et intervalle de uctuation
On lance un dé équilibré à6faces et l'on noteXle numéro de la face obtenue.
1◦) Écrire une fonction simuleX() qui simule la variable aléatoireX.
2◦) Écrire une fonction moyenne(n) qui, étant donné un entierndeN∗, simulenfois la variable aléatoireX et qui renvoie la valeur moyenne obtenue. Tester pour diérentes valeur denet commenter les résultats obtenus.
Représenter l'évolution de la moyenne obtenue en fonction den.
3◦) Le théorème central limite (à venir) nous dit que, lorsquenest grand (en pratique,n>30) la moyenne obtenue est proche de l'espéranceX, et qu'avec une grande probabilité, cette moyenne se situe dans l'intervalle
E(x)−2σ(X)
√n ;E(X) +2σ(X)
√n
Plus précisement, si l'on noteMnla variable aléatoire égale à la moyenne obtenue aprèsnlancers, on a : P
Mn∈
E(X)−2σ(X)
√n ;E(X) +2σ(X)
√n
'0.95
Visualiser ce résultat en ajoutant sur le graphe précédent les courbes d'équationsy=E(X)±2σ(X)
√x .
Solution:
from random import random from random import randint from math import ∗
import matplotlib . pyplot as plt def simuleX ( ) :
return randint ( 1 , 6 ) def moyenne ( n ) :
m = 0
f o r k in range ( n ) : m += simuleX ( ) m = m/n
return m
def graphique_moyenne ( n ) :
ListeM = [ moyenne ( k ) f o r k in range (1 , n+1) ] Listen = range (1 , n+1)
plt . plot ( Listen , ListeM ) sigma = sqrt ( ( 3 5 . 0 / 1 2 ) )
ListeY1 = [3.5+2 ∗ sigma/sqrt ( x ) f o r x in Listen ] ListeY2 = [3.5 − 2 ∗ sigma/sqrt ( x ) f o r x in Listen ] plt . plot ( Listen , ListeY1 )
plt . plot ( Listen , ListeY2 )
plt . show ( )
©Exercice 3: Paradoxe de Walter Penney
1◦) On considère une suite innie de lancers d'une pièce équilibrée.
Un calcul mathématique nous montre qu'on est presque sûr d'obtenir au moins une fois la conguration pile, pile, face dans la suite de lancers ; même chose pour la conguration face, pile, pile.
On s'intéresse dans cette question au rang moyen d'apparition de ces deux congurations.
1.a Écrire une fonction qui, étant donnée une conguration, simule des lancers de la pièce jusqu'à l'obtention de cette conguration et qui renvoie son rang d'apparition. On représentera pile par 1 et face par 0
1.b Écrire une fonction qui estime le rang moyen d'apparition de la conguration pile, pile, face et celui de la conguration face, pile, pile. Commenter les résultats obtenus.
1.c Retrouver par le calcul le résultat.
Solution:
from random import random from random import randint from math import ∗
import matplotlib . pyplot as plt pile=1
face=0 def lance ( ) :
i f random ( ) <.5:
return face e l s e :
return pile def apparition_configuration ( C ) :
#C e s t l a c o n f i g u r a t i o n à r e c h e r c h e r
#L e s t l a l i s t e des n d e r n i e r s l a n c e s n = l e n ( C )
L = [ lance ( ) f o r k in range ( n ) ] nb = l e n ( C )
while L != C :
L . pop ( 0) #on supprime l e premier l a nc e
L . append ( lance ( ) ) #on f a i t un lan ce suppl é mentaire nb += 1
return nb
def moyenne_apparition ( C , N ) : S = 0
f o r k in range ( N ) :
S +=apparition_configuration ( C ) S = f l o a t ( S ) /N
return ( S )
Par le calcul, on trouve 8 pour chacune des congurations.
2◦) Igor et Willow s'arontent dans un jeu dont les règles sont les suivantes :
â Igor est gagnant si la conguration pile, pile, face apparaît dans la suite des résultats des lancers, avant que la conguration n'apparaisse face,pile, pile ;
â Willow est gagnant si la conguration face,pile, pile apparaît dans la suite des résultats des lancers, avant que la congu- rationpile, pile, face n'apparaisse.
2.a Écrire une fonction qui simule une partie et qui renvoie le nom du gagnant.
2.b À l'aide de la fonction précédente, estimer la probabilité qu'a chacun des joueurs de gagner.
2.c retrouver par le calcul le résulat.
2014-2015 page 4 sur 6 TSVP
Solution:
Par le calcul, on trouve 1
4 pour Igor et 3
4 pour Willow.
def une_partie ( ) : C1 = [ 1 , 1 , 0 ] C0 = [ 0 , 1 , 1 ]
L = [ lance ( ) f o r k in range ( 3 ) ] while L!=C1 and L!=C0 :
L . pop ( 0)
L . append ( lance ( ) ) i f L==C1 :
return 1 e l s e :
return 0 def moyenne_partie ( N ) :
S = [ 0 , 0 ]
f o r k in range ( N ) : x = une_partie ( ) S [ x ] += 1
f o r x in range ( 2 ) : S [ x ] = S [ x ] / N return ( S )
3◦) Commenter les diérents résultats obtenus et en déduire le paradoxe de Walter Penney.