Paso 1

Generamos los puntos a simular.

n <- 1000
x <- runif(n)
y <- runif(n)

Paso 2

Determinamos distancias y contamos los puntos fuera y dentro de la circunferencia

dentro <- 0
fuera <- 0

for (i in 1:n) {
  distancia<- (x[i] - 0.5)^2 + (y[i] - 0.5)^2
  if (distancia <= 0.25) {
    dentro <- dentro + 1
  } else {
    fuera <- fuera + 1
  }
}

#Realizamos una representación gráfica del ejercicio.

t <- seq(0, 2*pi, length.out = 100)

plot(0, 0, asp = 1, type = "n",
     xlim = c(0, 1), ylim = c(0, 1),
     ann = F)

abline(v = seq(0, 1, 0.1), lty = 2, col = "gray70")
abline(h = seq(0, 1, 0.1), lty = 2, col = "gray70")

radio <- 1/2

a <- 0.5 
b <- 0.5 

xx <- a + cos(t)*radio
yy <- b + sin(t)*radio

points(xx, yy, type = "l", col = "blue")
points(x,y,pch = 20)

Paso 3

¿Cuántos de los puntos están dentro del círculo? ¿Cuál es su estimación de π?

Por lo menos un 78% de los puntos estan dentro del circulo, a medida que aumenta N este porcentaje se mantiene y la estimación de π se acerca a 3.1416

estimacion_pi <- dentro / n
aproximacion_pi <- estimacion_pi * 4

cat("Dentro:", dentro, "\n")
## Dentro: 783
cat("Estimación de π:", estimacion_pi, "\n")
## Estimación de π: 0.783
cat("Valor de π:", aproximacion_pi, "\n")
## Valor de π: 3.132

#Repetir para un mayor número de N

## Dentro: 7854136
## Estimación de π: 0.7854136
## Valor de π: 3.141654