On Thu, Apr 26, 2012 at 02:49:08PM -0500, cassie jones wrote:

> Thanks Berend, you are right. The break command would not work here. But

> the while loop is taking time to generate the desired.

>

> On Thu, Apr 26, 2012 at 2:39 PM, Berend Hasselman <

[hidden email]> wrote:

[...]

> > You need a while loop for this.

> >

> > i <- 2

> > while( i <= 5 )

> > # for(i in 2:5)

> > {

> > a[i] <- a[i-1]+runif(1,0,3)

> > if(a[i]>5) i <- 2 else i <- i+1

> > }

> >

> > And hope that the while loop will eventually terminate.

Hi.

a[i] is the sum of (i-1) independent realizations of runif(1,0,3),

so a[5] has the mean 6 and standard deviation sqrt(3). The probability

that it is less than 5 may be estimated as

x <- matrix(runif(4*100000, 0, 3), nrow=100000, ncol=4)

mean(rowSums(x) < 5)

[1] 0.28719

If you want to generate a larger number of instances, which terminate

below 5, try

x <- matrix(runif(4*20, 0, 3), nrow=20, ncol=4)

a <- matrix(0, nrow=4, ncol=5)

a[col(a) > row(a)] <- 1

y <- x[rowSums(x) < 5, ] %*% a

Petr Savicky.

______________________________________________

[hidden email] mailing list

https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide

http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.