Chapitre 4 : Simulation de VAR discrètes

publicité
Chapitre 4 : Simulation de variables aléatoires discrètes
1. Utilisation de l'instruction rand
1.1 Généralités
Scilab contient un générateur de nombres aléatoires. Pour obtenir un nombre aléatoire, on
utilise la fonction rand.
A retenir : rand() ou rand('uniform') renvoie un réel aléatoire entre 0 et 1.
On peut considérer que rand()  U([0;1])
Rappel :
Si X  U([0;1[), alors pour tout p  [0;1], P(X < p) = p et P(X  p) = 1 – p.
A retenir :
Si p  [0;1], (rand()<p) est un événement de probabilité p
Simuler la loi d'une V.A.R. X, c'est écrire un programme contenant une variable x dont les
valeurs sont aléatoires, et qui suit la loi de X.
Exemple :
Une urne contient deux boules bleues et une boule verte. On tire au hasard une boule dans
cette urne. On définit une variable boule, qui contient 'B' si on tire une boule bleue et 'V' si on
tire une boule verte.
Simuler l'expérience aléatoire.
 Initialisation : i = 0
Rappel : Compteur :  A chaque résultat positif : i = i + 1

Exemple : Dans l'exemple précédent, on effectue 100 tirages successifs avec remise/ On
compte le nombre de boules bleues obtenues.
Remarques :
_ On peut considérer que des appels successifs à la fonction rand donnent des résultats
indépendants. Si vous voulez utiliser un résultat, stockez-le immédiatement dans une autre
variable (un nouvel appel donnerait une valeur différente).
ECE2 : Année 2016-2017
Exemple :
Une urne contient 3 boules : une boule bleue, une boule rouge, une boule verte.
On tire une boule au hasard.
Programme faux :
if rand()<1/3 then boule='B'
else if rand()<2/3 then boule='R'
else boule='V'
end
end
Programme corrigé :
Remarque :
_ si m et n sont des entiers rand(m,n) renvoie une matrice de taille m  n, dont tous les
coefficients suivent la loi U([0,1]). Les coefficients de la matrice sont indépendants.
L'instruction find : si M est une matrice, find(condition sur M) renvoie la position des
éléments de la matrice qui vérifie cette condition.
En utilisant conjointement l'instruction length, on obtient le nombre d'éléments de M qui
vérifient cette condition.
Ex : si M=[5, 3, 1, -1, 4, 0]
find(M < 2) renvoie :
length(find(M < 2)) renvoie :
1.2 Simulation de la loi uniforme sur {1, …, n}, sur {n1, …, n2}
Soit n  1 : rand() 
donc n  rand() 
donc floor(n  rand()) 
donc floor(n  rand()) + 1 
Si X

U({1, …, n})
x = floor(n*rand()) + 1;
Exemple :
Soit X une V.A.R. qui suit la loi uniforme sur [[1 ; 10]].
Simulation de X :
Remarque : De manière générale, soient n1 et n2 deux entiers naturels avec n1 < n2.
On peut simuler la loi U([[n1, n2]]) par : x = n1 + floor((n2 – n1 + 1)*rand());
ECE2 : Année 2016-2017
1.3 Loi de Bernoulli
 X() = {0,1}
Soit p  ]0;1[ et X  B(p). (c'est-à-dire : P(X = 0) = 1 – p
 P(X = 1) = p
Si X  B(p)
if rand() < p then x = 1;
else x = 0;
end
Exemple : Une urne contient deux boules bleues et une boule verte. On tire une boule de
l'urne. Soit X la V.A.R. qui est égale à 1 si la boule est bleue et à 0 sinon.
Donc X 
Simulation de la loi de X :
1.4 Loi binomiale
Rappel : On considère une épreuve de Bernoulli de succès de probabilité p. On répète n fois
cette épreuve de manière indépendante. Soit X le nombre de succès. Alors X  B(n,p).
Si X  B(n,p)
x = 0;
for i =1:n
if rand()<p then x = x + 1; end
end
Exemple : On considère l'urne précédente. On tire 10 boules en les remettant à chaque fois.
Soit X le nombre de boules bleues tirées.
X 
Simulation de la loi de X :
Remarque : On peut également stocker les n valeurs de rand dans une matrice, puis compter
combien sont inférieures à p :
M = rand(n,1)
x=length(find(M<p))
ECE2 : Année 2016-2017
1.5 Loi géométrique
Rappel : On considère une épreuve de succès de probabilité p.
On répète cette épreuve de manière indépendante jusqu'à obtenir un succès.
On note X le nombre d'essais nécessaires. Alors X  G(p).
Si X  G(p) :
x = 1;
while rand()>p x = x + 1
end
Exemple : On considère l'urne précédente. On tire une boule en la remettant, jusqu'à obtenir
une boule bleue. Soit X le nombre de tirages nécessaires.
Donc X 
Simulation de la loi de X :
2. Simulations à l'aide de grand
Pour simuler directement les lois usuelles, on peut également utiliser la fonction grand :
Dans tous les exemples m et n sont des entiers naturels, et grand renvoie une matrice de taille
m  n dont tous les coefficients suivent la loi indiquée, de manière indépendante.
Loi uniforme U({n1, …, n2}) :
grand(m,n, 'uin', n1, n2)
Loi binomiale B(N, p) :
grand(m,n,'bin',N,p)
Loi géométrique G(p) :
grand(m,n,'geom',p)
Loi de Poisson P() :
grand(m,n,'poi',lambda)
Exemples :
Simulation de X  B(10, 2/3) :
Simulation de X  G(2/3) :
ECE2 : Année 2016-2017
Téléchargement