#Generador de normales por el metodo del TLC
normal_tlc <- function ( media = 0 , desv = 1) {
u <- runif (12) # 12 numeros uniformes en (0 ,1)
z <- sum ( u ) - 6 # normal estandar aproximada
x <- media + desv * z # escalar a la normal deseada
return ( x )
}
set.seed (123)
normal_tlc (500 , 166)
## [1] 697.9787
# Generar 1000 valores con nuestro metodo
set.seed (123)
datos <- replicate (1000 , normal_tlc (500 , 166) )
#Verificar media y desviacion
cat ( " Media : " , round ( mean ( datos ) , 2) , " \ n " )
## Media : 497.28 n
cat ( " Desv : " , round ( sd ( datos ) , 2) , " \ n " ) #
## Desv : 159.47 n
# Histograma + curva normal teorica encima
hist (datos , breaks = 30 , prob = TRUE , col = " lightsteelblue " ,
main = " Normales generadas por el metodo TLC " ,
xlab = " Valor " , ylab = " Densidad " )
curve ( dnorm (x , mean = 500 , sd = 166) ,
add = TRUE , col = " darkblue " , lwd = 2)

# R ya trae su propio generador normal : rnorm ()
set.seed (123)
datos_r <- rnorm (1000 , mean = 500 , sd = 166)
# Comparacion visual lado a lad
par ( mfrow = c (1 , 2) )
hist (datos , breaks = 30 , col = " lightsteelblue " ,
main = " Metodo TLC ( a mano ) " , xlab = " Valor " )
hist ( datos_r , breaks = 30 , col = " lightsalmon " ,
main = " rnorm () nativo " , xlab = " Valor " )

par ( mfrow = c (1 , 1) )
# Grafico Q - Q : si los puntos caen sobre la linea , es normal
qqnorm ( datos , main = "Q - Q del metodo TLC " )
qqline ( datos , col = " red " , lwd = 2)
