Random vector with constraints
1. 0.0 <= v[i] <= 1.0 for all i = 0, 1, ..., n-1. 2. v + ... + v[n-1] = 1.0 3. The method generating the random array v[n] should give a uniform distribution over the space determined by (1) and (2).There are two methods that come to mind:
Method 1We observe that the v is distributed with the distribution function (n-1)(1-x)^(n-2), x in [0,1]. Select v. Similarly v is distributed C(1-x)^n-3 , x in [1-v,1], for suitable C, v distributed C(1-x)^4, x in [1-v-v,1], et cetera. There is some moderately messy algebra here and you have to know how to transform a uniform distribution into a specified distribution. The procedure is a pain to set up but it is mathematically correct.
Method 2Construct an orthonormal linear basis for the subspace orthogonal to (1,1,...,1) and construct a box in this subspace containing the desired region. I haven't worked out a formula for this but it should be easy. Select points in the enclosing box using independent uniform distributions. Add the selected point to (1/n,...,1/n) and use the rejection criterion of method 2 (are all coordinates in the original space in [0...1]).
This page was last updated July 1, 2005.