11
$\begingroup$

Suppose that I want to generate a random probability vector $p = (p_1,\dots,p_d) \in [0,1]^d$, distributed uniformly over the simplex of probability vectors in $\mathbb{R}^d$. I would like to generate $U_i \stackrel{i.i.d.}{\sim} F, \;i=1,\dots,d$ from some distribution $F$, so that $(p_i) := (\frac{U_i}{\sum_{j=1}^d U_j})$ gives the desired random probability vector. What should $F$ be?

$\endgroup$

1 Answer 1

6
$\begingroup$

An exponential distribution $f_U(u)= \lambda \, e^{-\lambda \,u}$, $u \ge 0$, with arbitrary $\lambda>0$ should work. The joint probability

$$f_{\bf u}({\bf u})=\lambda^d \exp[-\lambda (u_1+u_2 +\cdots +u_d)]$$

is constant over the unit simplex. And it's also uniform over any simplex $u_1+u_2 +\cdots +u_d = t$. And the operation $(p_i) := (\frac{U_i}{\sum_{j=1}^d U_j})$ amounts to a radial projection over the unit simplex, which, by geometric similarity, preserves the uniformity.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .