Box-Muller-metoden

Den Box-Muller-metoden ( George EP boks og Mervin E. Muller, 1958) består i å generere par av tilfeldige tall med redusert sentrert normalfordeling , fra en kilde for tilfeldige tall i jevn fordeling .

Transformasjonen tar ofte to former.

Den omvendte transformasjonsmetoden kan også brukes til å generere normalt fordelte tall; Box-Muller-metoden er mer presis og raskere. Vi kan også vurdere ziggurat-metoden , som er mye raskere.

Den polare metoden er den som brukes av standard C ++ - biblioteket til GCC- kompilatoren for å prøve normalfordelingsvariabler.

Skriftene

Box-Muller transformasjon

La og to tilfeldige variabler uavhengig fordelt jevnt i] 0,1].

Være

og

Deretter Z 0 og Z 1 er uavhengige tilfeldige variabler etter en redusert sentrert normalfordeling .

Polar metode

Denne metoden, på grunn av George Marsaglia  (en) og TA Bray, er basert på følgende faktum: hvis er et punkt valgt ensartet på enhetsdisken, så er en ensartet variabel på segmentet , og et ensartet punkt på sirkelen, alt to uavhengige. Det følger av Box-Muller-transformasjonen at

er uavhengige tilfeldige variabler som følger en redusert sentrert normalfordeling .

Paret samples etter avvisningsmetoden . Variablene og er tegnet jevnt og uavhengig på segmentet . Så beregner vi . Hvis eller , la oss avvise det og velge et par igjen , til tilhører .

Forklaringer

Begrunnelsen for denne transformasjonen kommer fra transformasjonen av sannsynligheten til normal lov til polarkoordinater:

ved å sette s = r 2 .

Vi ser således at variablene S og Θ er uavhengige (tettheten til paret er produktet av tettheten) og følger to forskjellige lover:

Variabelen S genereres deretter ved hjelp av den inverse transformasjonsmetoden . Så er det bare å skrive likhetene og .

Sammenligning mellom de to formene

Den polare metoden er en avvisningssamplingsmetode , som bare bruker en del av tallene generert av den tilfeldige kilden, men det er i praksis raskere enn Box-Muller-transformasjonen fordi det er lettere å beregne:

Merknader og referanser

  1. George EP Box, Mervin E. Muller, “A Note on the Generation of Random Normal Deviates”, The Annals of Mathematical Statistics Vol. 29, nr. 2 (jun. 1958), s. 610-611 DOI : 10.1214 / aoms / 1177706645 , JSTOR : 2237361
  2. "  c ++ - Hvordan transformerer distribusjoner av C ++ 11-klassen den underliggende generatoren?  » , On Stack Overflow (åpnet 22. januar 2020 )
  3. (in) G. Marsaglia og TA Bray , "  A Convenient Method for Generating Normal Variables  " , SIAM Review , Vol.  6, n o  3,Juli 1964, s.  260–264 ( ISSN  0036-1445 og 1095-7200 , DOI  10.1137 / 1006063 , leses online , åpnes 22. januar 2020 )
  4. Devroye, Luc. , Ikke-enhetlig generasjon av tilfeldige variasjoner , Springer-Verlag ,1986, 843  s. ( ISBN  978-1-4613-8643-8 , 1-4613-8643-8 og 978-1-4613-8645-2 , OCLC  696038277 , les online ) , s.  Kapittel 5
  5. Sheldon Ross, A First Course in Probability , (2002), s.279-81
<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">