Dans cet exercice, on se propose d'étudier la variable aléatoire X dont la loi de probabilité est :
P(X=k) = \left \{ \begin{array}{rcl} 0{,}4 \: \text{ si} \: k=-10 \\ 0{,}2 \: \text{ si} \: k=-5 \\ 0{,}4 \: \text{ si} \: k=20 \end{array} \right.
Quels sont l'écart type et l'espérance de X ?
En se servant des formules du cours, on peut calculer l'espérance de X et sa variance de laquelle on déduira son écart type.
E(X)=0{,}4\times (-10) + 0{,}2\times (-5) + 0{,}4 \times(20)=3
On appellera \mu cette espérance.
V(X) = 0{,}4\times (-10-3)^2+0{,}2\times(-5-3)^2+0{,}4\times (20-3)^2 = 196
En appelant \sigma l'écart type, on obtient finalement :
\sigma = \sqrt{V(X)} =14
Ainsi, \mu = 3 et \sigma = 14 .
On souhaite écrire une fonction permettant de simuler une réalisation de cette variable aléatoire.
On donne le code suivant où \verb~valeurs~ et \verb~probabilites~ sont des listes donnant les valeurs prises par la variable aléatoire X et les probabilités correspondantes :
import random
def simul(valeurs,probabilites):
nb=random.random()
pcumul=0
for i in range(len(valeurs)) :
if (1) <=nb< (2) :
return valeurs[i]
pcumul=pcumul+(3)
On rappelle que random.random() permet de générer un nombre aléatoire entre 0 et 1.
Comment compléter le code ?
Dans le code, nb est un nombre aléatoire entre 0 et 1 et c'est grâce à lui que l'on déterminera quelle valeur retourne la fonction.
Ainsi :
- si nb est dans [0;0{,}4[ on donnera la valeur -10 ;
- si nb est dans [0{,}4;0{,}6[ on donnera la valeur -5 ;
- si nb est dans [0{,}6;1[ on donnera la valeur 10.
On va se servir de ces intervalles afin de compléter le code pcumul sera en effet la borne inférieure de l'intervalle que l'on étudie donc on remplace :
(1) par pcumul
La borne supérieure sera donc la somme de pcumul et la i-ème probabilité de la loi d'entrée donc on remplace :
(2) par pcumul + probabilites[i]
Enfin, à chaque itération, on veut actualiser la borne inférieure des intervalles étudiés, donc on remplace :
(3) par probabilites[i]
On remplace donc :
- (1) par pcumul
- (2) par pcumul + probabilites[i]
- (3) par probabilites[i]
À l'aide de la fonction simul(), quelle fonction renvoyant une liste de n réalisations de la variable aléatoire X peut-on écrire ?
On écrit une fonction qui, en entrée, prendra 3 paramètres :
- les valeurs de X ;
- les probabilités associées ;
- le nombre de réalisations que l'on veut renvoyer.
Les deux premiers paramètres sont nécessaires pour la fonction simul(valeurs, probabilites).
def echantillon(valeurs,probabilites,n) :
liste=[] #initialisation de la variable d'arrivée
for i in range(n) : #on réalise n fois la simulation
liste.append(simul(valeurs,probabilites))
return liste