a. Con la distribución uniforme, se generan 1000 coordendas (x, y)

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

b. Calcular el cuadrado de la distancia de cada punto (x, y) al centro del círculo (0.5, 0.5)

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)
}

c. Determinar cuántos de los puntos (x, y) están dentro del círculo.

Pd=sum(d < 0.25)
Pd
## [1] 78412

d. Estimación de pi.

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

e. Resultados

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.