estimate_pi <- function(n) {
x <- runif(n)
y <- runif(n)
count_inside <- 0
for (i in 1:n) {
distance_squared <- (x[i] - 0.5)^2 + (y[i] - 0.5)^2
if (distance_squared <= 0.25) {
count_inside <- count_inside + 1
}
}
pi_estimate_4 <- count_inside / n
pi_estimate <- pi_estimate_4 * 4
#número de puntos dentro del círculo y la estimación de pi
return(list(count_inside = count_inside, estimated_pi = pi_estimate))
}
n_points <- 1000
results <- estimate_pi(n_points)
cat("Número de puntos dentro del círculo:", results$count_inside, "\n")
## Número de puntos dentro del círculo: 785
cat("Estimación de pi:", results$estimated_pi, "\n")
## Estimación de pi: 3.14
estimate_pi2 <- function(n) {
x <- runif(n)
y <- runif(n)
count_inside2 <- 0
for (i in 1:n) {
distance_squared2 <- (x[i] - 0.5)^2 + (y[i] - 0.5)^2
if (distance_squared2 <= 0.25) {
count_inside2 <- count_inside2 + 1
}
}
pi_estimate_4_2 <- count_inside2 / n
pi_estimate2 <- pi_estimate_4_2 * 4
#número de puntos dentro del círculo y la estimación de pi
return(list(count_inside2 = count_inside2, estimated_pi2 = pi_estimate2))
}
n_points2 <- 100000
results <- estimate_pi2(n_points2)
cat("Número de puntos dentro del círculo:", results$count_inside2, "\n")
## Número de puntos dentro del círculo: 78707
cat("Estimación de pi:", results$estimated_pi2, "\n")
## Estimación de pi: 3.14828
Como vemos al aumentar la cantidad de puntos. Aumenta la cantidad de puntos dentro del círculo, así como la cercanía a la estimación de PI, tomando solo 1000 puntos, el resultado que obtenemos es de 3.26, mientras que al aumentar la cantidad de puntos a 100000 obtenemos 3.15, el cual es un valor mucho más cercano al valor real de PI