source('https://myweb.uiowa.edu/pbreheny/7110/f20/notes/fun.R')

# Moderate n
n <- 100000
set.seed(1)
r <- 50
gap <- n/1000
nn <- seq(gap, n, gap)
Y <- matrix(rnorm(n*r/gap, sd=sqrt(gap)), n/gap, r)
Z <- apply(Y, 2, cumsum) / sqrt(nn * log(log(nn)))
matplot(nn, Z, lty=1, col=alphaCol('gray50', 0.5), bty='n', type='l', las=1, xlab='n')
abline(h=sqrt(2), lty=2, col='slateblue', lwd=2)
abline(h=-sqrt(2), lty=2, col='slateblue', lwd=2)

# Huge n
set.seed(19)
r <- 50
log(log(n))
n <- 1e200
gap <- n/1000
nn <- seq(gap, n, gap)
Y <- matrix(rnorm(n*r/gap, sd=sqrt(gap)), n/gap, r)
Z <- apply(Y, 2, cumsum) / sqrt(nn * log(log(nn)))
matplot(nn, Z, lty=1, col=alphaCol('gray50', 0.5), bty='n', type='l', las=1, xlab='n', ylim=c(-1.5, 1.5))
sum(abs(Z[1000,]) < 0.5)
lines(nn, qnorm(.975)/sqrt(log(log(nn))), lty=2, col="#FF4E37FF", lwd=2)
lines(nn, -qnorm(.975)/sqrt(log(log(nn))), lty=2, col="#FF4E37FF", lwd=2)
