Méthode de Box-Muller

Un article de Wikipédia, l'encyclopédie libre.
Sauter à la navigation Sauter à 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.

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.

  • La forme « simple » transforme des coordonnées polaires uniformément distribuées en des coordonnées cartésiennes normalement distribuées.
  • La forme « polaire » transforme des coordonnées cartésiennes uniformément distribuées dans le cercle unité (obtenues par rejet) en des coordonnées normalement distribuées.

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.

É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]

Soient x et y choisis indépendamment et uniformément dans [−1,1], et s = x2 + y2. Si s ≥ 1 ou s = 0, rejetons-le et choisissons à nouveau un couple (x, y), jusqu'à ce que s appartienne à ]0,1[. Pour ces points « filtrés », calculons ensuite :

et

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[2] :

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 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. Sheldon Ross, A First Course in Probability, (2002), p.279-81