☰ Navigation
Uniform Disc
One way to sample points in a disc is to generate a random number between 0 0 0 and r r r for the radius and another one for the angle in [ 0 , 2 π ] [0,2\pi] [ 0 , 2 π ] . The points won’t be uniformly distributed like that, since the area of segments on the inside is different from that of the outside. The sampling will look something like this:
function uniform_radial_circle ( ) {
const u_1 = Math. random ( ) ;
const u_2 = Math. random ( ) ;
const r = u_1;
const alpha = u_2 * 2.0 * Math. PI ;
return [ r, alpha] ;
}
The points are focused in the center!
With uniform area sampling it looks like the following:
function uniform_circle ( ) {
const u_1 = Math. random ( ) ;
const u_2 = Math. random ( ) ;
const r = Math. sqrt ( u_1) ;
const alpha = u_2 * 2.0 * Math. PI ;
return [ r, alpha] ;
}
Algorithm:
Generate points uniformly distributed over the area of a disk with radius R R R
Choose uniform numbers u 1 , u 2 u_1, u_2 u 1 , u 2 in [ 0 , 1 ] [0,1] [ 0 , 1 ]
Calculate r = u 1 R r = \sqrt{u_1}R r = u 1 R
Calculate α = 2 π u 2 \alpha = 2\pi u_2 α = 2 π u 2
Optionally convert to cartesian coordinates with:
x = r cos α y = r sin α \begin{aligned}
x &= r\cos\alpha \\
y &= r\sin\alpha
\end{aligned}
x y = r cos α = r sin α
PDF Used In Monte Carlo Integration
p ( α ) = 1 π R 2 p ( r , α ) = r π R 2 \begin{aligned}
p(\alpha) &= \frac{1}{\pi R^2} \\
p(r,\alpha) &= \frac{r}{\pi R^2}
\end{aligned} p ( α ) p ( r , α ) = π R 2 1 = π R 2 r
Derivation:
We want our distribution to be uniform in area over the disk. We will therefore integrate over the entire area A A A .
The probability distribution function (pdf) has to integrate to 1 1 1 over the complete region. Since we want it to be uniform, it will just be some constant for each area element => p ( a ) = c p(a)=c p ( a ) = c
∫ A p ( a ) d a = ∫ A c d a = c ∫ A d a = 1 \int_{A}p(a)da = \int_{A}cda = c \int_{A}da = 1
∫ A p ( a ) d a = ∫ A c d a = c ∫ A d a = 1
The easy way :
We know that the area of a disc is π R 2 \pi R^2 π R 2 .
c ∫ A d a = 1 ⇒ c π R 2 = 1 ⇒ c = 1 π R 2 c \int_{A}da = 1 \Rightarrow c\pi R^2 = 1 \Rightarrow c = \frac{1}{\pi R^2}
c ∫ A d a = 1 ⇒ c π R 2 = 1 ⇒ c = π R 2 1
The complicated way :
An area element d a da d a can be decomposed as d a = d x d y da=dxdy d a = d x d y (the very small area is just a rectangle).
We then define a mapping from polar to cartesian coordinates:
x = r cos α = f x ( r , α ) ∂ f x ( r , α ) ∂ r x = r\cos\alpha = f_x(r, \alpha)\frac{\partial f_x(r, \alpha)}{\partial r}
x = r cos α = f x ( r , α ) ∂ r ∂ f x ( r , α )
y = r sin α = f y ( r , α ) y = r\sin\alpha = f_y(r, \alpha)
y = r sin α = f y ( r , α )
To do a coordinate transformation we have to find the determinant of the Jacobian of this transformation.
J = ( ∂ f x ( r , α ) ∂ r ∂ f x ( r , α ) ∂ α ∂ f y ( r , α ) ∂ r ∂ f y ( r , α ) ∂ α ) = ( cos α − r sin α sin α r cos α ) \begin{aligned}
J &= \begin{pmatrix} \frac{\partial f_x(r, \alpha)}{\partial r}& \frac{\partial f_x(r, \alpha)}{\partial \alpha} \\ \frac{\partial f_y(r, \alpha)}{\partial r} & \frac{\partial f_y(r, \alpha)}{\partial \alpha} \end{pmatrix} \\
&= \begin{pmatrix} \cos\alpha & -r\sin\alpha \\ \sin\alpha & r\cos\alpha \end{pmatrix} \end{aligned} J = ( ∂ r ∂ f x ( r , α ) ∂ r ∂ f y ( r , α ) ∂ α ∂ f x ( r , α ) ∂ α ∂ f y ( r , α ) ) = ( cos α sin α − r sin α r cos α )
The determinant is thus:
det J = r cos α cos α − ( − r sin α sin α ) = r cos 2 α + r sin 2 α = r ( cos 2 α + sin 2 α ) = r \det{J} = r\cos\alpha \cos\alpha - (-r\sin\alpha \sin\alpha) = r\cos^2\alpha + r\sin^2\alpha = r(\cos^2\alpha + \sin^2\alpha) = r
det J = r cos α cos α − ( − r sin α sin α ) = r cos 2 α + r sin 2 α = r ( cos 2 α + sin 2 α ) = r
Computing the integral from before:
c ∫ A d a = c ∫ A d x d y = c ∫ 0 R ∫ 0 2 π r d r d α = c ∫ 0 R r d r ∫ 0 2 π d α = c ∫ 0 R r d r [ α ] 0 2 π = c ∫ 0 R r d r = 2 c π ∫ 0 R r d r = 2 c π [ r 2 2 ] 0 R = c π R 2 \begin{aligned}
c \int_{A}da &= c \int_{A}dxdy \\
&= c \int_0^{R}\int_0^{2\pi} rdrd\alpha \\
&= c \int_0^{R}rdr\int_0^{2\pi} d\alpha \\
&= c \int_0^{R}rdr [\alpha]_0^{2\pi} \\
&= c \int_0^{R}rdr \\
&= 2 c \pi \int_0^{R}rdr \\
&= 2 c \pi [\frac{r^2}{2}]_0^R \\
&= c\pi R^2 \end{aligned} c ∫ A d a = c ∫ A d x d y = c ∫ 0 R ∫ 0 2 π r d r d α = c ∫ 0 R r d r ∫ 0 2 π d α = c ∫ 0 R r d r [ α ] 0 2 π = c ∫ 0 R r d r = 2 c π ∫ 0 R r d r = 2 c π [ 2 r 2 ] 0 R = c π R 2
Setting this result equal to 1 1 1 and solving for c c c will give the desired result
Marginal And Conditional Densities:
We have p ( a ) = 1 π R 2 p(a)=\frac{1}{\pi R^2} p ( a ) = π R 2 1 . With the transformation from the last step we get p ( r , α ) = r π R 2 p(r,\alpha)=\frac{r}{\pi R^2} p ( r , α ) = π R 2 r (Transform into polar angles by adding the factor r r r )
First the marginal density:
p r ( r ) = ∫ 0 2 π p ( r , α ) d α = ∫ 0 2 π r π R 2 d α = r π R 2 ∫ 0 2 π d α = r π R 2 2 π = 2 r R 2 \begin{aligned}
p_r(r) &= \int_0^{2\pi} p(r,\alpha)d\alpha\\
&= \int_0^{2\pi} \frac{r}{\pi R^2}d\alpha \\
&= \frac{r}{\pi R^2}\int_0^{2\pi} d\alpha \\
&= \frac{r}{\pi R^2} 2\pi \\
&= \frac{2r}{R^2}
\end{aligned} p r ( r ) = ∫ 0 2 π p ( r , α ) d α = ∫ 0 2 π π R 2 r d α = π R 2 r ∫ 0 2 π d α = π R 2 r 2 π = R 2 2 r
The conditional probability:
p ( α ∣ r ) = p ( r , α ) p r ( r ) = r R 2 π R 2 2 r = 1 2 π p(\alpha \vert r) = \frac{p(r,\alpha)}{p_r(r)} = \frac{rR^2}{\pi R^2 2r} = \frac{1}{2\pi}
p ( α ∣ r ) = p r ( r ) p ( r , α ) = π R 2 2 r r R 2 = 2 π 1
Compute CDFs
P r ( r ) = ∫ 0 r p r ( r ′ ) d r ′ = ∫ 0 r 2 r ′ R 2 d r ′ = 2 R 2 [ r 2 2 ] 0 r = r 2 R 2 P_r(r) = \int_0^r p_r(r')dr' = \int_0^r \frac{2r'}{R^2}dr' = \frac{2}{R^2}[\frac{r^2}{2}]_0^r = \frac{r^2}{R^2}
P r ( r ) = ∫ 0 r p r ( r ′ ) d r ′ = ∫ 0 r R 2 2 r ′ d r ′ = R 2 2 [ 2 r 2 ] 0 r = R 2 r 2
P ( α ∣ r ) = ∫ 0 α p ( α ′ ∣ r ) d α ′ = ∫ 0 α 1 2 π d α ′ = α 2 π P(\alpha \vert r) = \int_0^\alpha p(\alpha' \vert r)d\alpha' = \int_0^\alpha \frac{1}{2\pi}d\alpha' = \frac{\alpha}{2\pi}
P ( α ∣ r ) = ∫ 0 α p ( α ′ ∣ r ) d α ′ = ∫ 0 α 2 π 1 d α ′ = 2 π α
Invert CDFs
u 1 = P r ( r ) = r 2 R 2 u 1 R 2 = r 2 u 1 R 2 = r u 1 R = r \begin{aligned}
u_1 &= P_r(r) \\
&= \frac{r^2}{R^2} \\
u_1 R^2 &= r^2 \\
\sqrt{u_1R^2} &= r \\
\sqrt{u_1}R &= r
\end{aligned} u 1 u 1 R 2 u 1 R 2 u 1 R = P r ( r ) = R 2 r 2 = r 2 = r = r
u 2 = P ( α ∣ r ) = α 2 π 2 π u 2 = α \begin{aligned}
u_2 &= P(\alpha \vert r) \\
&= \frac{\alpha}{2\pi} \\
2\pi u_2 &= \alpha
\end{aligned} u 2 2 π u 2 = P ( α ∣ r ) = 2 π α = α