# Random variable generation (Pt 1 of 3)

November 28, 2010
By

(This article was first published on Why? » R, and kindly contributed to R-bloggers)

As I mentioned in a recent post, I’ve just received a copy of Advanced Markov Chain Monte Carlo Methods. Chapter 1.4 in the book (very quickly) covers random variable generation.

## Inverse CDF Method

A standard algorithm for generating random numbers is the inverse cdf method. The continuous version of the algorithm is as follows:

1. Generate a uniform random variable $U$

2. Compute and return $X = F^{-1}(U)$

where $F^{-1}(cdot)$ is the inverse of the CDF. Well known examples of this method are the exponential distribution and the Box-Muller transform.

## Example: Logistic distribution

I teach this algorithm in one of my classes and I’m always on the look-out for new examples. Something that escaped my notice is that it is easy to generate RN’s using this technique from the Logistic distribution. This distribution has CDF

$displaystyle F(x; mu, s) = frac{1}{1 + exp(-(x-mu)/s)}$
and so we can generate a random number from the logistic distribution using the following formula:
$displaystyle X = mu + s logleft(frac{U}{1-U}right)$

Which is easily converted to R code:
``` myRLogistic = function(mu, s){   u = runif(1)   return(mu + s log(u/(1-u))) }```

R-bloggers.com offers daily e-mail updates about R news and tutorials on topics such as: Data science, Big Data, R jobs, visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...