# use MASS package so we can sample from multivariate Gaussian
# (you need to install MASS beforehand)
library(MASS)

p = 100;

# initialize with p--by--p matrix of all 0
omega = matrix(0,p,p);

for (ii in 1:p) {
	for (ij in 1:p) {
		if (ii == ij) {
			omega[ii,ii] = 20;
		} else {
			if (runif(1) < 0.06) {
				# generate random value uniformly from -5 to 5
				rand_val = runif(1,-5,5);
				omega[ii,ij] = rand_val;
				omega[ij,ii] = rand_val;
			}
		}
	}
}

# invert matrix
Sigma = solve(omega)

n=400;

# sample from multivariate normal
Xs = mvrnorm(n, matrix(0,1,p), Sigma);

# standardize data so each column has norm 1
for (j in 1:p) {
	Xs[,j] = Xs[,j]/sqrt(sum(Xs[,j]^2));
}

# build sample covariance matrix
# Do not divide by (1/n) since each column already has norm 1
Sn = t(Xs)%*%Xs;