I need to develop Mathematica code to sample uniformly from a unit n-dimensional simplex.
I came across a description of the problem at: http://geomblog.blogspot.com/2005/10/sampling-from-simplex.html
Specifically, I would like a uniform sample from the set
X = { (x1, x2, ..., xD) | 0 <= xi <= 1, x1 + x2 + ... + xD = 1}.
D is the dimension of the simplex.
So, the coordinates of any point on the simplex would sum to 1 and I need to sample points on the simplex.
geomblog's solution suggested:
Generating IID random samples from an exponential distribution by sampling X from [0,1] uniformly, and returning -log(X)).
Take n samples, then normalize.
This should result in a list of numbers which is a uniform sample from the simplex.
I've searched extensively for a Mathematica implementation of something like this, to no avail.
I keep trying different things but haven't made much headway.
Any suggestions for how to develop this (or an equivelant) in Mathematica much appreciated
A