Soit X la variable aléatoire qui correspond au gain algébrique du jeu suivant :

On souhaite écrire un programme qui permette de générer un échantillon de taille n de ce jeu.
Les variables suivantes sont définies au début du programme :
\verb/ X=[-5,-2{,}10] /
\verb/ p=[0.4{,}0.2{,}0.4] /
À quoi correspondent les variables \verb/X/ et \verb/p/ définies au début du programme ?
\verb/X/ est une liste d'entiers relatifs qui correspondent aux valeurs que prend la variable aléatoire définie dans l'énoncé. Il s'agit des gains algébriques du jeu, auxquels sont associés les probabilités que contient la liste \verb/p/.
\verb/X/ correspond aux gains algébriques et \verb/p/ aux probabilités associées.
Quelle fonction permet de calculer l'espérance de \verb/X/ ?
Pour calculer l'espérance d'une variable aléatoire X, on somme les valeurs de p_i \times X_i ou p_i est la probabilité associée à la valeur X_i de la variable aléatoire :
E = \sum_{i=1}^n p_i X_i
On définit une fonction Python qui prend deux arguments de type liste, les valeurs de la variable aléatoire \verb/X/ et les probabilités associées \verb/p/, et on itère à l'aide d'une boucle \verb/for/ pour calculer la somme des p_i \times X_i .
On initialise une variable \verb/e/ qui vaut zéro initialement, et on ajoute à chaque étape la valeur \verb/p[i] * X[i]/.
Ainsi :
\verb / def esperance(X,p): /
\verb / e = 0 /
\verb / n = len(X) /
\verb / for i in range(n): /
\verb / e += p[i]*X[i] /
\verb / return e /
Quelle fonction permet de simuler le tirage qui suit la loi de probabilité de \verb/X/ ?
On fait appel à la fonction \verb/random/ du module \verb/random/ qui renvoie un nombre tiré aléatoirement dans l'intervalle [0{,}1[ pour initialiser la variable \verb/proba/. Dès que la somme cumulée des probabilités associées à la variable aléatoire X dépasse cette valeur, on renvoie la valeur de X trouvée.
On initialise une variable \verb/s/ qui vaut zéro et qui augmente à chaque itération de la valeur de p_i associée à la valeur X_i . Dès que \verb/proba < s/, on retourne \verb/X[i]/.
Ainsi :
\verb/ from random import random /
\verb/ def simul(X, p): /
\verb/ proba = random() /
\verb/ s = 0 /
\verb/ i = 0 /
\verb/ for p_i in p: /
\verb/ s += p_i /
\verb/ if proba < s: /
\verb/ return X[i] /
\verb/ i += 1 /
Quelle fonction permet de générer une échantillon de taille n de l'expérience qui suit la loi de probabilité de \verb/X/ ?
Pour construire un échantillon de taille n à partir de la variable aléatoire X , on utilise la fonction \verb/simul/ définie précédemment et on ajoute chaque élément dans une liste à l'aide de la fonction \verb/liste.append(element)/.
Ainsi :
\verb/ def echantillon(X, p, n): /
\verb/ listeX=[] /
\verb/ for i in range(n): /
\verb/ listeX.append(simul(X,p)) /
\verb/ return listeX /
Quelle instruction permet de générer N échantillon de taille n de l'expérience qui suit la loi de probabilité de \verb/X/ à l'aide de la fonction \verb/echantillon()/ ?
Pour retourner N échantillons, on applique la fonction \verb/echantillon(X,p,n)/ définie précédemment N fois. On peut pour cela utiliser une boucle \verb/for/.
Ainsi :
\verb/ def N_echantillons(X, p, n, N): /
\verb/ listeX=[] /
\verb/ for i in range(N): /
\verb/ listeX.append(echantillon(X, p, n)) /
\verb/ return listeX /