For this particular problem you can probably use
polar coordinates.

But something similar to your code could be:

x <- runif(900)
y <- runif(900)
z <- sqrt(x^2 + y^2)
okay <- z < 1
while(any(!okay)) {
   n.bad <- sum(!okay)
   x[!okay] <- runif(n.bad)
   y[!okay] <- runif(n.bad)
   z <- sqrt(x^2 + y^2)  # restricting to !okay may or may not be useful
   okay <- z < 1
}



Patrick Burns

Burns Statistics
[EMAIL PROTECTED]
+44 (0)20 8525 0696
http://www.burns-stat.com
(home of S Poetry and "A Guide for the Unwilling S User")

Sean O'Riordain wrote:

Hi Folks,

I'm trying to learn R. One of my intentions is to do some Monte-Carlo type modelling of road "accidents".

Below, to simplify things, I've appended a little program which does a 'monte-carlo' type simulation. However, it is written in a way which seems a bit un-natural in R. Could someone help me make this a bit more R-ish please?

Or is there a completely different approach I should be taking?

Many thanks in advance,
Sean O'Riordain
seanpor AT acm.org


-------------------------------------------- n <- 900; # number of valid items required...

x <- numeric(n);
y <- numeric(n);
z <- numeric(n);

c <- 1;  # current 'array' pointer
tc <- 0; # total items actually looked at...

while (c <= n) {
    x[c] = runif(1, 0, 1);
    y[c] = runif(1, 0, 1);

    z[c] = sqrt(x[c]^2 + y[c]^2);
    if (z[c] < 1)
        c <- c + 1;
    tc <- tc + 1;
}

print("'overwork' ratio");
print(tc/(c-1));
plot(x,y);

______________________________________________
[EMAIL PROTECTED] mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help



______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help

Reply via email to