Objetivo Principal

Retornar a área da função gaussiana por simulação que dependa só de n.

Objetivos Específicos

  • Seja n numero de simulações;
  • Gerar dois numeros aleatorios e ver se ele esta abaixo da curva da normal. Se sim, soma 1 (Loop for);
  • Utilizar duas uniformes para fazer os intervalos quadrado: runif(0.5,0.5) e runif(0,1/sqrt(2*pi));

Função “area_norm”

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)

}

Resultado da área para diferentes tamanhos de n

Para n = 150
> area_norm(150)
[1] 0.3909634
Para n = 3000
> area_norm(3000)
[1] 0.380325
Para n = 60000
> area_norm(60000)
[1] 0.3834101