A method that is easier to understand and does not make use of the $\sin$ function is based on the fact that if $X\sim U(0,1)$ and $Y\sim U(0,1)$, then $P[X^2+Y^2\leq 1] = \pi/4$ (see ["Monte Carlo method" on Wikipedia](https://en.wikipedia.org/wiki/Monte_Carlo_method)). The following code uses this approach:
```{r}
set.seed(42)
N = 1000
df = data.frame(X = runif(N), Y = runif(N))
...
...
@@ -44,6 +43,5 @@ It is then straightforward to obtain a (not really good) approximation to $\pi$