# SEC: random numbers N = 10000 # N = 1000 random.data = rnorm(N, mean=0, sd=1) hist(random.data, nclass = 50, col = "navy", xlab = "Data", probability = T, main = "Histogram of Random Data") # density of generated data dens = density(random.data) lines(dens, col = "orange", lwd = 4) # theoretical density x = seq(-4,4,0.1) true.norm = dnorm(x, mean = 0, sd = 1) lines(x,true.norm, col = "green", lty = 3, lwd = 4) legend("topleft",c("empirical", "theoretical"), lty = c(1,3), col = c('orange','green'),lwd=4) # SEC: law of large numbers # simplest version six.counter=0; N = 1000 for (i_loop in 1:N) { die<-sample(1:6,1) if (die==6) {six.counter=six.counter+1} } six.counter/N # simpler version N=1000; six.counter=rep(0,N); for (i_loop in 1:N) { die<-sample(1:6,1) if (die==6) {six.counter[i_loop]=1} } plot(1:N,cumsum(six.counter)/(1:1000),type='l',ylim=c(0,1),lwd=2) abline(h=1/6,lwd=2,col='red') # simple version N = 1000 die.all <- sample(1:6,N,replace=T) six.index <- die.all==6 par(mfrow = c(2,1)) par(oma=c(2,2,0,0),mar=c(4,4,1,1),mfrow=c(2,1)) plot(1:N, die.all, pch=20, col = 'red', ylim = c(0,7), ylab = "Result", xlab = "trial") plot(1:N,cumsum(six.index)/(1:1000), type='l', ylim=c(0,1), lwd=2, ylab = "P(die = 6)", xlab = "trial") abline(h=1/6,lwd=2,col='red') # CLT par(mfrow=c(1,1)) N=10 nRep=10000 dat<-matrix(runif(N*nRep),nrow=N) means<-colMeans(dat) hist(means,nclass=50,probability=T) dens<-density(means);lines(dens,col='skyblue',lwd=3) xs=seq(-0,1,0.01) theo.dens<-dnorm(xs,mean=0.5,sd=sqrt((1/12)/N)) lines(xs,theo.dens,col='orange',lwd=3,lty=2) # GCD # script version r=-99;v1=1633;v2=355 while (r!=0){ r=v1%%v2 print(paste('v1 =',v1,', v2 = ',v2,',remainder = ',r)) v1=v2 v2=r } # function version GCD<-function(v1,v2){ real.v1=max(c(v1,v2)) real.v2=min(c(v1,v2)) repeat{ r=real.v1%%real.v2;real.v1=real.v2;real.v2=r if (r==0){ print(paste('GCD is',real.v1)); return(real.v1); break} } } GCD(1633,355) # digit conversion # binary to dec bin2dec=function(bin) { ones=which(rev(bin)==1)-1 dec=sum(2^ones) return(dec) } # dec 2 bin - script num=150;bin=c() while(num!=0) { rem=num%%2; num=num%/%2 bin=print(c(rem,bin)) } # dec 2 bin - function dec2bin<-function(num, digits=8) { bin=c() if (num==0){ bin=0 } else { while(num!=0){ rem=num%%2 num=num%/%2 bin=c(rem,bin) } } if (length(bin)