Retornar a área da função gaussiana por simulação que dependa só de n.
area_norm<- function(n,seed=1)
{
set.seed(seed)
# uniforme1 de tamanho n de -0.5 a 0.5
unif1<- runif(n, -0.5, 0.5)
# uniforme2 de tamanho n de 0 a 1/sqrt(2*pi)
unif2<- runif(n, 0, 1/sqrt(2*pi))
# funcao densidade da distribuicao normal
f_unif1<- (1/(sqrt(2*pi)))*exp(-(unif1^2/2))
# vetor de NA para receber valores do "for" abaixo
flag<- rep(NA,n)
# para todo i de 1 até o tamanho do vetor de unif2
# preencher o vetor flag com as respsotas do teste
# se o ponto da f_unif1 for maior ou igual ao ponto da unif2,retorna 1 para o vetor flag.
for(i in 1:length(unif2)) {
flag[i]<-ifelse(f_unif1[i]>=unif2[i],1,0)
}
# obseva-se a frequencia do vetor flag, calculando a media de "1's"
freq <- mean(flag)
# resultado da area eh base (freq) vezes altura (1/sqrt(2*pi))
area <- freq/sqrt(2*pi)
return(area)
}
> area_norm(150)
[1] 0.3909634
> area_norm(3000)
[1] 0.380325
> area_norm(60000)
[1] 0.3834101