Skip to content

Efficient alternative for Example 0.5: An Accept-Reject Distribution #982

@Banyc

Description

@Banyc

I am still learning math so there could be factual errors!

Let suppose the range of the output is in $[0, 1]$. We could just multiply it with $a$ if we want to extend its range to $[0, a]$.

The PDF of the distribution implied by the example is

$$f(x) = \begin{cases} 2x & 0 \leq x < 1 \\\ 0 & \text{otherwise} \end{cases}$$

Its CDF is

$$P(X < x) = \begin{cases} x^2 & 0 \leq x < 1 \\\ 0 & \text{otherwise} \end{cases}$$

According to the universality of uniform distribution

Let $F$ be a CDF which is a continuous function and strictly increasing on the support of the distribution.
This ensures that the inverse function $F^{-1}$ exists, as a function from $(0, 1)$ to $\mathbb{R}$.
We then have the following results

  • Let $U \sim \text{Unif}(0, 1)$ and $X = F^{-1}(U)$.
    Then $X$ is an r.v. with CDF $F$.
  • Let $X$ be an r.v. with CDF $F$.
    Then $F(X) \sim \text{Unif}(0, 1)$.

In this case, $F(x) = P(X &lt; x)$, which is indeed a continuous function that strictly increases.

The inverse of $F$ is

$$F^{-1}(x) = \sqrt{x}, \quad 0 \leq x < 1$$

Apply the $U$ to $F^{-1}$ and we have

$$X = F^{-1}(U) = \sqrt{U}$$

The resulting code is

Math.sqrt(random(1))

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions