Search code examples
rmontecarlo

Using Monte Carlo for computing circle area


I am trying to write a function circle_MC that takes the length of radius and the number of simulations (N) as an input and returns the area enclosed by a circle.

For doing that, I create a numeric vector and change it to "1", if the point is inside the circle, i.e. the ifelse statement holds. My code so far:

circle_MC <- function(r, N)
{
  inside <- numeric(N),#only zeroes
  
  x_sim[i] <-  runif(N, min = -r, max = r),
  y_sim[i] <-  runif(N, min = -r, max = r),
  inside <- ifelse(x_sim^2[i] + y_sim^2[i] <= r, 1, 0),
  area <- (sum(inside)/length(inside)*4)
  
  return(area)
}

However, it gives me the error message "Error: unexpected '}' in "}".

I am pretty new to R and would love to understand where my mistake is.


Solution

  • THe issue is with the , at the end of each assignment. Here, each assignment is a separate statement. It is not clear where the i comes from as the arguments are only 'r' and 'N'

    circle_MC <- function(r, N)
    {
      inside <- numeric(N) #only zeroes removed , 
      
      x_sim <-  runif(N, min = -r, max = r) # removed ,
      y_sim <-  runif(N, min = -r, max = r)  # removed ,
      inside <- ifelse(x_sim^2 + y_sim^2 <= r, 1, 0) # removed ,
      area <- (sum(inside)/length(inside)*4)
      
      return(area)
    }