An alternative using runif.

x <- round(runif(10000, 0, 1), 2)
y <- round(runif(10000, 0, 1-x), 2)
z <- round(1-x-y, 2)

sum1 <- cbind(x, y, z)


any(!(sum1[,1] + sum1[,2] + sum1[,3]))


Richard


On Tue, Jan 28, 2014 at 9:36 AM, S Ellison <S.Ellison@lgcgroup.com> wrote:

> > I'd like to create a matrix with three columns so that each element is
> > between 0 and 1 and each row always adds to 1. So, if in the same row the
>
> You could start with expand.grid
>
> m <- expand.grid(x1=0:100, x2=0:100)  #Avoids comparing floats
> m <- m[rowSums(m)<=100,]                    #Throw away the oversized ones
> m <- cbind(m, x3=100-rowSums(m))   #Get the final column
> m <- m/100                                                     #Scale to
> [0,1]
>
> table(rowSums(m))
>
>
> S Ellison
>
>
>
> *******************************************************************
> This email and any attachments are confidential. Any u...{{dropped:13}}


