Genere n coordenadas x: X1, . . . , Xn. Utilice la distribución uniforme con valor mínimo de 0 y valor máximo de 1. La distribución uniforme genera variables aleatorias que tienen la misma probabilidad de venir de cualquier parte del intervalo (0,1).
Genere 1000 coordenadas y: Y1,…,Yn, utilizando nuevamente la distribución uniforme con valor mínimo de 0 y valor máximo de 1.
Cada punto (Xi,Yi)se encuentra dentro del círculo si su distancia desde el centro (0.5,0.5)es menor a 0.5. Para cada par (Xi,Yi)determine si la distancia desde el centro es menor a 0.5. Esto último se puede realizar al calcular el valor (Xi−0.5)2+(Yi−0.5)2, que es el cuadrado de la distancia, y al determinar si es menor que 0.25.
¿Cuántos de los puntos están dentro del círculo? ¿Cuál es su estimación de π?
#DISTRIBUCION UNIFORME
x = runif(1000,0,1)
y = runif(1000,0,1)
distancias = numeric()
#DISTANCIA DESDE EL CENTRO
for (i in 1:length(x)){
distancias[i] = (x[i]-0.5)^2 + (y[i]-0.5)^2
}
puntos = ifelse(distancias < 0.25, 1, 0)
Total de puntos dentro del circulo:
sum(puntos)
## [1] 800
Estimacion de PI:
4 * sum(puntos)/length(x)
## [1] 3.2
Utilizando 10000 puntos:
x = runif(10000,0,1)
y = runif(10000,0,1)
distancias = numeric()
for (i in 1:length(x)){
distancias[i] = (x[i]-0.5)^2 + (y[i]-0.5)^2
}
puntos = ifelse(distancias < 0.25, 1, 0)
print(paste("Suma: ",sum(puntos)))
## [1] "Suma: 7917"
print(paste("Estimacion: ",4 * sum(puntos)/length(x)))
## [1] "Estimacion: 3.1668"
Utilizando 100000
x = runif(100000,0,1)
y = runif(100000,0,1)
distancias = numeric()
for (i in 1:length(x)){
distancias[i] = (x[i]-0.5)^2 + (y[i]-0.5)^2
}
puntos = ifelse(distancias < 0.25, 1, 0)
print(paste("Suma: ",sum(puntos)))
## [1] "Suma: 78528"
print(paste("Estimacion: ",4 * sum(puntos)/length(x)))
## [1] "Estimacion: 3.14112"