rm(list=ls())
set.seed(123)
n <- 100
U <- runif(n) #generating 100 uniform random samples
X <- qnorm(U) #applying inverse cdf of standard normal
cat("Summary statistics of generated normal samples:\n")
## Summary statistics of generated normal samples:
print(summary(X))
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -3.227322 -0.688816 -0.084396 -0.005457 0.691819 2.528336
cat("\nStandard deviation:", sd(X), "\n")
##
## Standard deviation: 0.9769824
cat("\nTheoretical mean: 0, Sample mean:", mean(X))
##
## Theoretical mean: 0, Sample mean: -0.005456935
cat("\nTheoretical SD: 1, Sample SD:", sd(X))
##
## Theoretical SD: 1, Sample SD: 0.9769824
cat("\n\nQ-Q Plot to verify normality:\n")
##
##
## Q-Q Plot to verify normality:
qqnorm(X, main = "Q-Q Plot: Generated vs Theoretical Normal")
qqline(X, col = "red")

#From the Q-Q plot, we can say generated normal and theoretical normal look pretty similar.