Re: [R] generate random numbers subject to constraints

From: Ted Harding <>
Date: Wed, 26 Mar 2008 22:06:54 +0000 (GMT)

On 26-Mar-08 21:26:59, Ala' Jaouni wrote:
> X1,X2,X3,X4 should have independent distributions. They should be
> between 0 and 1 and all add up to 1. Is this still possible with
> Robert's method?
> Thanks

I don't think so. A whileago you wrote
"The numbers should be uniformly distributed" (but in the context of an example where you had 5 variable; now you are back to 4 variables). Let's take the 4-case first.

The two linear constraints confine the point (X1,X2,X3,X4) to a triangular region within the 4-dimensional unit cube. Say it has vertices A, B, C.
You could then start by generating points uniformly distributed over a specific triangle in 2 dimentions, say the one with vertices at A0=(0,0), B0=(0,1), C0=(1,0). This is easy.

Then you need to find a linear transformation which will map this triangle (A0,B0,C0) onto the triangle (A,B,C). Then the points you have sampled in (A0,B0,C0) will map into points which are uniformly distributed over the triangle (A,B,C).

More generally, you will be seeking to generate points uniformly distributed over a simplex.

For example, the case (your earlier post) of 5 points with 2 linear constraints requires a tetrahedron with vertices (A,B,C,D) in 5 dimensions whose coordinates you will have to find. Then take an "easy" tetrahedron with vertices (A0,B0,C0,D0) and sample uniformly within this. Then find a linear mapping from (A0,B0,C0,D0) to (A,B,C,D) and apply this to the sampled points.

This raises a general question: Does anyone know of an R function to sample uniformly in the interior of a general (k-r)-dimensional simplex embedded in k dimensions, with (k+1) given vertices?

Best wishes to all,

> On Wed, Mar 26, 2008 at 12:52 PM, Ted Harding
> <> wrote:

>> On 26-Mar-08 20:13:50, Robert A LaBudde wrote:
>>  > At 01:13 PM 3/26/2008, Ala' Jaouni wrote:
>>  >>I am trying to generate a set of random numbers that fulfill
>>  >>the following constraints:
>>  >>
>>  >>X1 + X2 + X3 + X4 = 1
>>  >>
>>  >>aX1 + bX2 + cX3 + dX4 = n
>>  >>
>>  >>where a, b, c, d, and n are known.
>>  >>
>>  >>Any function to do this?
>>  >
>>  > 1. Generate random variates for X1, X2, based upon whatever
>>  > unspecified distribution you wish.
>>  >
>>  > 2. Solve the two equations for X3 and X4.
>>  The trouble is that the original problem is not well
>>  specified. Your suggestion, Robert, gives a solution
>>  to one version of the problem -- enabling Ala' Jaouni
>>  to say "I have generated 4 random numbers X1,X2,X3,X4
>>  such that X1 and X2 have specified distributions,
>>  and X1,X2,X3,X4 satisfy the two equations ... ".
>>  However, suppose the real problem was: let X2,X2,X3,X4
>>  have independent distributions F1,F2,F3,F4. Now sample
>>  X1,X2,X3,X4 conditional on the two equations (i.e. from
>>  the coditional density). That is a different problem.
>>  As a slightly simpler example, suppose we have just X1,X2,X3
>>  and they are independently uniform on (0,1). Now sample
>>  from the conditional distribution, conditional on
>>  X1 + X2 + X3 = 1.
>>  The result is a random point uniformly distributed on the
>>  planar triangle whose vertices are at (1,0,0),(0,1,0),(0,0,1).
>>  Then none of X1,X2,X3 is uniformly distributed (in fact
>>  the marginal density of each is 2*(1-x)).
>>  However, your solution would work from either point of
>>  view if the distributions were Normal.
>>  If X1,X2,X3,X4 were neither Normally nor uniformly
>>  distributed, then finding or simulating the conditional
>>  distribution would in general be difficult.
>>  Ala' Jaouni needs to tell us whether what he precisely
>>  wants is as you stated the problem, Robert, or whether
>>  he wants a conditional distribution for given distributions
>>  if X1,X2,X3,X4, or whether he wants something else.
>>  Best wishes to all,
>>  Ted.
>>  --------------------------------------------------------------------
>>  E-Mail: (Ted Harding) <>
>>  Fax-to-email: +44 (0)870 094 0861
>>  Date: 26-Mar-08                                       Time: 19:52:16
>>  ------------------------------ XFMail ------------------------------

> ______________________________________________
> mailing list
> PLEASE do read the posting guide
> and provide commented, minimal, self-contained, reproducible code.

E-Mail: (Ted Harding) <> Fax-to-email: +44 (0)870 094 0861
Date: 26-Mar-08                                       Time: 22:06:38
------------------------------ XFMail ------------------------------

______________________________________________ mailing list PLEASE do read the posting guide and provide commented, minimal, self-contained, reproducible code. Received on Wed 26 Mar 2008 - 22:10:16 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Thu 27 Mar 2008 - 09:30:24 GMT.

Mailing list information is available at Please read the posting guide before posting to the list.

list of date sections of archive