Méthode de Box-Muller

Un article de Wikipédia, l'encyclopédie libre.
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[modifier | modifier le code]

Transformation de Box-Muller[modifier | modifier le code]

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

Soient

et

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

Méthode polaire[modifier | modifier le code]

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

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

Le couple est échantillonné par la méthode du rejet. Les variables et sont tirées uniformément et indépendamment sur le segment . On calcule ensuite . Si ou , rejetons-le et choisissons à nouveau un couple , jusqu'à ce que appartienne à .

Explications[modifier | modifier le code]

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

en posant s = r2.

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 :

  •  : S suit une loi exponentielle de paramètre 1/2.
  •  : Θ suit une loi uniforme continue sur .

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 et .

Comparaison entre les deux formes[modifier | modifier le code]

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 (1 – π/4) ≈ 21,46 %. On génère donc en moyenne 4/π ≈ 1,2732 nombres aléatoires uniformes pour obtenir chaque nombre aléatoire normal.

Notes et références[modifier | modifier le code]

  1. a et b 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 DOI 10.1214/aoms/1177706645, JSTOR:2237361
  2. « c++ - How do distributions of C++11 class transform the underlying generator? », sur Stack Overflow (consulté le )
  3. (en) G. Marsaglia et T. A. Bray, « A Convenient Method for Generating Normal Variables », SIAM Review, vol. 6, no 3,‎ , p. 260–264 (ISSN 0036-1445 et 1095-7200, DOI 10.1137/1006063, lire en ligne, consulté le )
  4. Devroye, Luc., Non-uniform random variate generation, Springer-Verlag, , 843 p. (ISBN 978-1-4613-8643-8, 1-4613-8643-8 et 978-1-4613-8645-2, OCLC 696038277, lire en ligne), Chapitre 5
  5. (en) Sheldon Ross, A First Course in Probability, 8, , 445-6 p. (lire en ligne)