I found a wonderful method for generating uniformly distributed points on the n-1 simplex, and it passes every empirical statistical test I can think of, but I can't figure out how to prove it. Here is the method:
Generate m rows * n columns of randoms uniformly distributed between 0 and 1. Then take the Log of everything. Then normalize each row, dividing each element in the row by the row total. Now you have m samples uniformly distributed over the (n-1) dimensional simplex.
Can anyone show me a proof the distribution is uniform on the simplex? I'm afraid to use it without being prepared to offer proof of correctness.
Credit: I found this method here on the MMa page: https://mathematica.stackexchange.com/questions/33652/uniformly-distributed-n-dimensional-probability-vectors-over-a-simplex
The implementation in MMa is just this:
#/Total[#,{2}]&@Log@RandomReal[{0,1},{m,n}]
The uniform distribution on the $(n-1)$-simplex is known as the Dirichlet distribution of order $n$ with unit parameters. It can be constructed as the law of $$\left(\frac{E_1}{E_1+\cdots+E_n},\ldots,\frac{E_n}{E_1+\cdots+E_n}\right)$$ where $E_1,\ldots,E_n$ are i.i.d. Exp$(1)$ (a.k.a. Gamma$(1,1)$) variables; see Dirichlet distribution. It then suffices to recall the representation $E_i=- {\log U_i}$ where $U_1,\ldots,U_n$ are i.i.d. standard uniform variables to justify your claim.