### How to estimate \(\pi\) using Monte Carlo?

Introduce a square \(\mathcal{S\subseteq}\mathbb{R}^{2}\), the sides being of length 2, with inscribed disk \(\mathcal{D}\) of radius 1. We are interested in computing the area \(I\) of \(\mathcal{D}\) using Monte Carlo. We have \[\begin{aligned}
I & =\pi=\int\int_{\mathcal{D}}dx_{1}dx_{2}\\
& =\int\int_{\mathcal{S}}\mathbb{I}_{\mathcal{D}}\left( x_{1},x_{2}\right)
dx_{1}dx_{2}\text{ as }\mathcal{D\subset S}\\
& =4\int\int_{\mathbb{R}^{2}}\mathbb{I}_{\mathcal{D}}\left( x_{1}%
,x_{2}\right) \mu\left( x_{1},x_{2}\right) dx_{1}dx_{2}%
\end{aligned}
\] where \(\mathcal{S}:=\left[ -1,1\right] \times\left[ -1,1\right]\) and \[
\mu\left( x_{1},x_{2}\right) =\frac{1}{4}\mathbb{I}_{\mathcal{S}}\left(
x_{1},x_{2}\right)
\] is the uniform density on the square \(\mathcal{S}\). In this case, we have \[
\widehat{I}_{n}=4\frac{n_{\mathcal{D}}}{n}%
\] where \(n_{\mathcal{D}}\) is the number of samples which fell within the disk.

```
# Asign basic parameters of the experiment.
numPoints <- 1000 # number of samples
r <- 1 # radius of disk
C <- c(1, 1) # center of disk and square
l <- 2 # size of square
# Draw 2-by-numPoints matrix of independent U[0, l] random variables.
U <- matrix(data = l * runif(n = 2 * numPoints), nrow = numPoints, ncol = 2)
# Compute index mask of all points which are inside the circle.
inside <- (U[, 1] - C[1])^2 + (U[, 2] - C[2])^2 < r^2
# Count the number points in U that fell inside the disk.
M <- sum(inside)
cat("Monte Carlo estimate of pi: ", (M/numPoints) * (l^2)/(r^2))
```

`## Monte Carlo estimate of pi: 3.08`

```
# A simple graph of the points: green for the points inside the circle and
# black for the others.
plot(U[inside, 1], U[inside, 2], type = "p", xlab = "X", ylab = "Y", xlim = c(0,
l), ylim = c(0, l), col = "green")
points(U[!inside, 1], U[!inside, 2], col = "black")
```