מתוך ויקיפדיה, האנציקלופדיה החופשית
טרנספורמציית בוקס–מילר או שיטת בוקס–מילר נוצרה בשנת 1958 על ידי ג'ורג' בוקס ומרווין מילר . שיטה זו היא שיטה ליצירת זוגות מספרים אקראיים בהתפלגות נורמלית ממספרים המתפלגים בהתפלגות אחידה רציפה .
אם X,Y מתפלגים בצורה אחידה בקטע [0,1] אזי אם נגדיר
R
=
−
2
∗
ln
(
x
)
{\displaystyle R={\sqrt {-2*\ln(x)}}}
ו-
θ
=
2
π
y
{\displaystyle \theta =2\pi y}
, המשתנים U,V יתפלגו נורמלית עם תוחלת 0 ושונות 1.
כאשר:
U
=
R
∗
c
o
s
θ
{\displaystyle U=R*cos\theta }
ו-
V
=
R
∗
s
i
n
θ
{\displaystyle V=R*sin\theta }
.
הצפיפות המשותפת של X, Y היא:
f
(
x
,
y
)
=
1
{\displaystyle f(x,y)=1}
מפני שהם מתפלגים בהתפלגות אחידה.
נמצא את היעקוביאן בהמרה מ-X,Y ל-R ו-θ:
J
(
R
,
θ
)
=
|
∂
R
∂
x
∂
θ
∂
x
∂
R
∂
y
∂
θ
∂
y
|
=
|
1
/
(
x
∗
−
2
ln
x
)
0
0
2
π
|
=
2
π
/
(
R
∗
e
−
R
2
/
2
)
{\displaystyle J(R,\theta )={\begin{vmatrix}{\dfrac {\partial R}{\partial x}}&{\dfrac {\partial \theta }{\partial x}}\\[2pt]{\dfrac {\partial R}{\partial y}}&{\dfrac {\partial \theta }{\partial y}}\\[2pt]\end{vmatrix}}={\begin{vmatrix}1/(x*{\sqrt {-2\ln x}})&0\\0&2\pi \end{vmatrix}}\,=2\pi /(R*e^{-R^{2}/2})}
נמצא את היעקוביאן בהמרה בין R,θ ו-u,v:
J
(
u
,
v
)
=
|
∂
u
∂
R
∂
v
∂
R
∂
u
∂
θ
∂
v
∂
θ
|
=
|
c
o
s
θ
s
i
n
θ
−
R
s
i
n
θ
R
c
o
s
θ
|
=
R
{\displaystyle J(u,v)={\begin{vmatrix}{\dfrac {\partial u}{\partial R}}&{\dfrac {\partial v}{\partial R}}\\[2pt]{\dfrac {\partial u}{\partial \theta }}&{\dfrac {\partial v}{\partial \theta }}\\[2pt]\end{vmatrix}}={\begin{vmatrix}cos\theta &sin\theta \\-Rsin\theta &Rcos\theta \end{vmatrix}}\,=R}
עכשיו נמצא את הצפיפות המשותפת של V ו-U:
f
u
v
=
f
x
y
/
(
J
(
u
,
v
)
∗
J
(
R
,
θ
)
=
1
/
(
2
π
/
(
R
∗
e
−
R
2
/
2
)
∗
R
)
=
e
−
(
V
2
+
U
2
)
/
2
/
2
π
{\displaystyle f_{uv}=f_{xy}/(J(u,v)*J(R,\theta )=1/(2\pi /(R*e^{-R^{2}/2})*R)=e^{-(V^{2}+U^{2})/2}/{2\pi }}
וזו בדיוק הצפיפות של משתנים המתפלגים נורמלית.
שיטה זו דורשת שימוש בפונקציות טריגונומטריות וכן בשורש שאלו פעולות שלמחשב לוקח זמן רב לחשב ולכן שיטה זו איטית. בעקבות זאת, יצרו שיטות חדשות יעילות מעט יותר כמו שיטת מרסגליה וכן שיטות אשר האלגוריתם מסובך יותר אך הוא משתמש בפעולות בסיסיות בלבד שלא דורשות זמן חישוב רב כמו שיטת זיגורט .