# On the computation of π
# Nicholas
# October 21, 2025

# Asking the math library
pi
## [1] 3.141593

# Buffon’s needle
set.seed(42)
N = 100000
x = runif(N)
theta = pi/2 * runif(N)
2 / (mean(x + sin(theta) > 1))
## [1] 3.14327

# Using an area fraction argument
set.seed(42)
N = 1000
df = data.frame(X = runif(N), Y = runif(N))
df$Accept = (df$X**2 + df$Y**2 <= 1)

library(ggplot2)
ggplot(df, aes(x = X, y = Y, color = Accept)) +
  geom_point(alpha = .2) + coord_fixed() + theme_bw()

4 * mean(df$Accept)
## [1] 3.156
