Méthode de Box-Muller

De testwiki
Aller à la navigation Aller à la recherche
Représentation graphique de la transformation : les cercles de départ, répartis uniformément autour de l'origine, deviennent un nouvel ensemble de cercles centrés, dont la répartition est proche de l'origine puis s'étiole rapidement. Les plus grands cercles de départ correspondent aux plus petits cercles d'arrivée, et vice-versa.

En théorie des probabilités et en informatique, la méthode de Box-Muller (George E. P. Box et Mervin E. Muller, 1958[1]) consiste à générer des paires de nombres aléatoires à distribution normale centrée réduite, à partir d'une source de nombres aléatoires de loi uniforme.

La transformation prend communément deux formes.

On peut également utiliser la méthode de la transformée inverse pour générer des nombres normalement distribués ; la méthode de Box-Muller est plus précise et plus rapide[1]. On peut également envisager la méthode ziggourat, qui est beaucoup plus rapide.

La méthode polaire est celle utilisée par la bibliothèque standard du C++ du compilateur GCC pour échantillonner des variables de distribution normale[2].

Écritures

Transformation de Box-Muller

Soient U1 et U2 deux variables aléatoires indépendantes uniformément distribuées dans ]0,1].

Soient

Z0=Rcos(Θ)=2lnU1cos(2πU2)

et

Z1=Rsin(Θ)=2lnU1sin(2πU2).

Alors Z0 et Z1 sont des variables aléatoires indépendantes suivant une loi normale centrée réduite.

Méthode polaire

Cette méthode, due à George Marsaglia et T.A. Bray[3]Modèle:,[4], est basée sur le fait suivant : si (X,Y) est un point choisi uniformément sur le disque unité, alors U=X2+Y2 est une variable uniforme sur le segment [0,1], et (XU,YU) un point uniforme sur le cercle, tous deux indépendants. Il en résulte, par la transformée de Box-Muller, que

Z0=X2lnUU,Z1=Y2lnUU

sont des variables aléatoires indépendantes suivant une loi normale centrée réduite.

Le couple (X,Y) est échantillonné par la méthode du rejet. Les variables X et Y sont tirées uniformément et indépendamment sur le segment [1,1]. On calcule ensuite U=X2+Y2. Si U1 ou U=0 , rejetons-le et choisissons à nouveau un couple (X,Y), jusqu'à ce que U appartienne à ]0,1[.

Explications

La justification de cette transformation vient de la transformation de la mesure de probabilités de la loi normale en coordonnées polaires[5] :

12π2ex2+y22dxdy=12πer22rdrdθ=(12es2ds)(12πdθ)

en posant Modèle:Formule.

On voit ainsi que les variables S et Θ sont indépendantes (la densité du couple est le produit des densités) et suivent deux lois distinctes :

La variable S est alors générée par la méthode de la transformée inverse. Il suffit ensuite d'écrire les égalités x=rcosθ et y=rsinθ.

Comparaison entre les deux formes

La méthode polaire est une méthode d'échantillonnage à rejet, qui n'utilise qu'une partie des nombres générés par la source aléatoire, mais elle est en pratique plus rapide que la transformation de Box-Muller car elle est plus simple à calculer :

  • elle n'utilise pas de fonction trigonométrique, coûteuses en temps de calcul ;
  • la génération de nombres aléatoires uniformes est plutôt rapide, il n'est donc pas gênant d'en gaspiller une partie. En moyenne, la part de points rejetés est Modèle:Nobr. On génère donc en moyenne Modèle:Nobr aléatoires uniformes pour obtenir chaque nombre aléatoire normal.

Voir aussi

Notes et références

  1. 1,0 et 1,1 George E. P. Box, Mervin E. Muller, « A Note on the Generation of Random Normal Deviates », The Annals of Mathematical Statistics Vol. 29, No. 2 (Jun., 1958), pp. 610-611 Modèle:DOI, Modèle:JSTOR
  2. Modèle:Lien web
  3. Modèle:Article
  4. Modèle:Ouvrage
  5. Modèle:Ouvrage

Articles connexes

Modèle:Portail