###Generate list of x x = NULL n = 50 pixprime = NULL pix = NULL pixprimeratio = NULL pixratio = NULL accepted = 0 acceptanceratio = 0 mag = NULL for(i in 1:n) { spinran = runif(1,0,1) if(spinran > .5) { spinstate = 1 } if(spinran <= .5) { spinstate = -1 } x<-c(x, spinstate) } ###Burn for 10,000 times and run for 100,000 T = 100000 for(i in 1:T) { ###Change Random Spin index = ceiling(runif(1,0,50)) xprime = x xprime[index] = xprime[index]*-1 ###Computing the target distribution and metropolis ratio pix <- NULL pixprime <- NULL for(i in 1:n-1) { pix = c(pix, 2*x[i]*x[i+1]) pixprime = c(pixprime, 2*xprime[i]*xprime[i+1]) } pixratio = exp(sum(pix)) pixprimeratio = exp(sum(pixprime)) MetRatio <- pixprimeratio/pixratio ###test answer U <- runif(1,0,1) if (U <= MetRatio) { x = xprime if(T>10000) { accepted = accepted + 1 } } if(T>10000) { mag = c(mag, sum(x)) } } acceptanceratio = accepted/90000 acceptanceratio acf(mag) hist(mag)