td simulation
Simulation de variables aléatoires
Références : Modélisation stochastique et simulation, B. Bercu et D. Chafaï
Pour Scilab, non testé : Introduction à scilab, P. Chancelier, ed. Springer.
Algorithmique et mathématiques : travaux pratiques et applications scilab pour le lycée et la licence, J.
Ouin, ed. Ellipses
On trouve aussi facilement des tutoriels et manuels d’introduction à scilab sur internet.
Le problème qu’on se pose dans ce chapitre est l’écriture d’algorithmes qui simulent une expérience aléatoire : une sorte de “dé informatique”. La brique de base pour cela est le générateur aléatoire de loi uniforme sur [0, 1] (sous scilab, commande rand). En général, ce générateur n’est que “pseudo-aléatoire” au sens où il est construit sur un algorithme déterministe. Mais on suppose qu’il est parfait, et que différents appels à cet algorithme fournissent des variables aléatoires de loi uniforme sur [0, 1], indépendantes.
A partir de cette brique de base, on peut obtenir toutes les lois, par des considérations assez simples.
1. Utilisation de propriétés de certaines lois
(1) La loi de Bernoulli de paramètre p.
C’est aussi une brique de base. L’algorithme le plus simple consiste à couper l’intervalle [0, 1] en deux sous-intervalles, l’un de taille p, l’autre de taille 1 − p :
U = rand(1); if (U < p) then X = 1; else X = 0; end Ou encore sous scilab
U = rand(1);
X = 1 ∗ (U < p)
En effet on vérifie bien que X est à valeurs dans {0; 1} et que P(X = 1) = P(U < p) = p
(2) Loi discrète (Par exemple) Loi sur {1, 34, 48} de loi P(1) = 32 , P(34) = 16 , P(48) = 16
On partitionne l’intervalle [0, 1] en trois sous-intervalles de taille respective 23 , 16 et 16 . Une manière de faire cela consiste à prendre [0, 32 ]. [ 23 , 23 + 61 ], [ 23 + 16 , 1]. L’algorithme est alors :
U = rand(1); if (U < 2/3) then X = 1; elseif (U < 5/6) then X = 34; else X = 48 end Ou encore sous scilab :
U = rand(1);
X = (U < 2/3) + 34 ∗ ((U > 2/3) & (U <