`ranMvnXch` <- function(rho, n, nRep=1, seed=NULL) { if ( !exists(".Random.seed", envir=.GlobalEnv, inherits = FALSE) ){ runif(1) } if (is.null(seed)) RNGstate <- get(".Random.seed", envir = .GlobalEnv) else { R.seed <- get(".Random.seed", envir = .GlobalEnv) set.seed(seed) RNGstate <- structure(seed, kind = as.list(RNGkind())) on.exit(assign(".Random.seed", R.seed, envir = .GlobalEnv)) } x = sqrt(1-rho^2)*matrix(rnorm(nRep*n),nRep) z = matrix( rep(rho*rnorm(nRep),n),nRep, byrow=F ) y = x + z; return(y) }