set.seed(1)
n=2
m=100000*n
puntos=matrix(runif(m, min=0, max=1), ncol=n)
head(puntos)
## [,1] [,2]
## [1,] 0.2655087 0.7005180
## [2,] 0.3721239 0.7017648
## [3,] 0.5728534 0.3129363
## [4,] 0.9082078 0.5523553
## [5,] 0.2016819 0.8724921
## [6,] 0.8983897 0.6811237
d=numeric()
for(i in 1:(m/n))
{
distancia=((puntos[i,1]-0.5)^2)+((puntos[i,2]-0.5)^2)
d=c(d, distancia)
}
Pd=sum(d < 0.25)
Pd
## [1] 78412
La estimación de pi corresponde a la proporción de puntos dentro del círculo multiplicada por 4
pi=(Pd/(m/n))*4
pi
## [1] 3.13648
Con una simulación de 1000 puntos (x, y) la estimación de pi es de 3.08, para mejorar la precisión de la estimación se aumenta el número de puntos y se repiten los cálculos. Incialmente se realiza la simulación con 10000 puntos y la estimación de pi es de 3.1224, ahora se realiza la simulación con 100000 puntos y la estimación de pi es 3.13648.
Como se observa en los resultados presentados, a medida que se aumenta el número de puntos (x, y) la precisión de la estimación de pi aumenta pero así mismo aumenta el consumo de los recursos computacionales para realizar los cálculos, es necesario balancear estas 2 variables (precisión y requerimientos computacionales) de acuerdo a las exigencias de los proyectos o de las investigaciones que se realicen con las herramientas de la ciencia de datos.