numIter <- 1000 e <- 100 x <- rep(0,numIter) candidate <- rep(0,numIter) mu <- 3 sigma <- 5 accept <- 0 for (i in 2:numIter) { candidate[i] <- runif(1,x[i-1]-e,x[i-1]+e); if (runif(1) < (dnorm(candidate[i],mu,sigma)/dnorm(x[i-1],mu,sigma)) ) { x[i] <- candidate[i] accept <- accept+1 } else { x[i] <- x[i-1] } } par(mfrow=c(2,1)) plot(candidate,col=3,type="b",ylim=c(min(x)-1,max(x)+1)) par(new=TRUE) plot(x,type="b",ylim=c(min(x)-1,max(x)+1)) hist(x,nclass=20,freq=FALSE,xlim=c(min(x)-1,max(x)+1),ylim=c(0,1.1*dnorm(mu,mu,sigma))) par(new=TRUE) temp<- seq(min(x)-1,max(x)+1,length=1000) plot(temp,dnorm(temp,mu,sigma),xlim=c(min(x)-1,max(x)+1),ylim=c(0,1.1*dnorm(mu,mu,sigma)),type="l") cat("Acceptance Rate: ",accept/numIter,"\n");