MathGroup Archive 2008

[Date Index] [Thread Index] [Author Index]

Search the Archive

Sample uniformly from a simplex

  • To: mathgroup at smc.vnet.net
  • Subject: [mg94416] Sample uniformly from a simplex
  • From: Andreas <aagas at ix.netcom.com>
  • Date: Fri, 12 Dec 2008 06:56:02 -0500 (EST)

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


  • Prev by Date: Aligning two PLots
  • Next by Date: Re: Difficulty in importing dates and times with functions
  • Previous by thread: Re: Aligning two PLots
  • Next by thread: Re: Sample uniformly from a simplex