set.seed(1234)
anti.Func <- function(s, n) {
#uniform random variates
x1 = runif(n/2)
x2 = runif(n/2)
anti = 1-x1
u1 = c(x1,x2)
u2 = c(x1, anti)
sec1 = var(s * sqrt(-2 *log(u1)))
sec2 = var(s * sqrt(-2 *log(u2)))
return(c(sec1, sec2, sec1-sec2))
}
anti.Func(3,1000)
## [1] 4.0331100 3.8545537 0.1785564
#https://en.wikipedia.org/wiki/Antithetic_variates
#https://en.wikipedia.org/wiki/Rayleigh_distribution#Generating_random_variates
# I struggled a bit, so this definitely was completed after help from classmates as well!