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!