MathGroup Archive 2008

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

Search the Archive

Re: Sample uniformly from a simplex

  • To: mathgroup at smc.vnet.net
  • Subject: [mg94446] Re: Sample uniformly from a simplex
  • From: Andreas <aagas at ix.netcom.com>
  • Date: Sun, 14 Dec 2008 07:33:41 -0500 (EST)

I've kept thinking about this and came up with the following.  

sampleSimplex[sampleSize_, dimensions_] := 
 Module[{sample, sampleOutput},
  sample = RandomReal[1, {sampleSize, dimensions}];
  sampleOutput =
   Table[1 / Total[sample[[i, All]]] *sample[[i, All]], {i, 1, 
     sampleSize}];
  sampleOutput 
  ]

example: 

sampleSimplex[4, 3]

{{0.163972, 0.445817, 0.390211}, {0.470828, 0.291766, 
  0.237406}, {0.56663, 0.3813, 0.0520696}, {0.182715, 0.600876, 0.216409}}

This doesn't draw from an exponential distribution, but would this work?  

Also, if it does work can I do it a better (faster, more elegant) way?


  • Prev by Date: Re: Clever way to manipulate lists
  • Next by Date: Re: Clever way to manipulate lists
  • Previous by thread: Sample uniformly from a simplex
  • Next by thread: Re: Sample uniformly from a simplex