An Illustration of CLT

We adapt the code below and modify it to show normal probablity plot and add some mixture/monstrous distributions

Code source:

sdm.sim <- function(n,src.dist=NULL,param1=NULL,param2=NULL) {
   r <- 10000  # Number of replications/samples - DO NOT ADJUST
   # This produces a matrix of observations with  
   # n columns and r rows. Each row is one sample:
   my.samples <- switch(src.dist,
    "E" = matrix(rexp(n*r,param1),r),
    "N" = matrix(rnorm(n*r,param1,param2),r),
    "U" = matrix(runif(n*r,param1,param2),r),
    "P" = matrix(rpois(n*r,param1),r),
    "C" = matrix(rcauchy(n*r,param1,param2),r),
  "B" = matrix(rbinom(n*r,param1,param2),r),
    "G" = matrix(rgamma(n*r,param1,param2),r),
    "X" = matrix(rchisq(n*r,param1),r),
    "T" = matrix(rt(n*r,param1),r),
    "Z" = matrix((rnorm(n*r,param1,param2))^2,r),
    "ZZ"=matrix(rnorm(n*r,param1,param2)+5*runif(n*r,param1,param2),r)
    ## ZZ is our experimental construction by mixing normal and uniform together
    )
   
   all.sample.sums <- apply(my.samples,1,sum)
   all.sample.means <- apply(my.samples,1,mean)   
   all.sample.vars <- apply(my.samples,1,var) 
   par(mfrow=c(2,2))
   hist(my.samples[1,],col="gray",main="Distribution of One Sample")
   hist(all.sample.sums,col="gray",main="Sampling Distributionof
    the Sum")
   hist(all.sample.means,col="gray",main="Sampling Distributionof the Mean")
   qqnorm(all.sample.means, main="NormalProbabilityPlot of the Mean")
#   hist(all.sample.vars,col="gray",main="Sampling Distributionnof
#   the Variance")
}

Select source distribution as exponential

sdm.sim(2,src.dist="E",param1=1)

curve(dexp(x,1),0,3)

Uniform

sdm.sim(500,src.dist="U",param1=0,param2=1)

Bernoulli and Binomial

sdm.sim(2,src.dist="B",param1=1,param2=.4)

sdm.sim(200,src.dist="B",param1=1,param2=.5)

Normal

sdm.sim(2,src.dist="N",param1=1,param2=4)

sdm.sim(200,src.dist="Z",param1=0,param2=1)

ZZ

sdm.sim(200,src.dist="ZZ",param1=0,param2=1)

LS0tCnRpdGxlOiAiR2FtZSAxMTogQ2VudHJhbCBMaW1pdCBUaGVvcmVtICIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKI0FuIElsbHVzdHJhdGlvbiBvZiBDTFQgCldlIGFkYXB0IHRoZSBjb2RlIGJlbG93IGFuZCBtb2RpZnkgaXQgdG8gc2hvdyBub3JtYWwgCnByb2JhYmxpdHkgcGxvdCBhbmQgYWRkIHNvbWUgbWl4dHVyZS9tb25zdHJvdXMgZGlzdHJpYnV0aW9ucwoKIyNDb2RlIHNvdXJjZTogCgogLSBbU2FtcGxpbmcgRGlzdHJpYnV0aW9ucyBhbmQgQ2VudHJhbCBMaW1pdCBUaGVvcmVtIGluIFJdKGh0dHBzOi8vd3d3LnItYmxvZ2dlcnMuY29tL3NhbXBsaW5nLWRpc3RyaWJ1dGlvbnMtYW5kLWNlbnRyYWwtbGltaXQtdGhlb3JlbS1pbi1yLykgCgoKYGBge3J9CnNkbS5zaW0gPC0gZnVuY3Rpb24obixzcmMuZGlzdD1OVUxMLHBhcmFtMT1OVUxMLHBhcmFtMj1OVUxMKSB7CiAgIHIgPC0gMTAwMDAgICMgTnVtYmVyIG9mIHJlcGxpY2F0aW9ucy9zYW1wbGVzIC0gRE8gTk9UIEFESlVTVAogICAjIFRoaXMgcHJvZHVjZXMgYSBtYXRyaXggb2Ygb2JzZXJ2YXRpb25zIHdpdGggIAogICAjIG4gY29sdW1ucyBhbmQgciByb3dzLiBFYWNoIHJvdyBpcyBvbmUgc2FtcGxlOgogICBteS5zYW1wbGVzIDwtIHN3aXRjaChzcmMuZGlzdCwKCSJFIiA9IG1hdHJpeChyZXhwKG4qcixwYXJhbTEpLHIpLAoJIk4iID0gbWF0cml4KHJub3JtKG4qcixwYXJhbTEscGFyYW0yKSxyKSwKCSJVIiA9IG1hdHJpeChydW5pZihuKnIscGFyYW0xLHBhcmFtMiksciksCgkiUCIgPSBtYXRyaXgocnBvaXMobipyLHBhcmFtMSksciksCgkiQyIgPSBtYXRyaXgocmNhdWNoeShuKnIscGFyYW0xLHBhcmFtMiksciksCiAgIkIiID0gbWF0cml4KHJiaW5vbShuKnIscGFyYW0xLHBhcmFtMiksciksCgkiRyIgPSBtYXRyaXgocmdhbW1hKG4qcixwYXJhbTEscGFyYW0yKSxyKSwKCSJYIiA9IG1hdHJpeChyY2hpc3EobipyLHBhcmFtMSksciksCgkiVCIgPSBtYXRyaXgocnQobipyLHBhcmFtMSksciksCgkiWiIgPSBtYXRyaXgoKHJub3JtKG4qcixwYXJhbTEscGFyYW0yKSleMixyKSwKCSJaWiI9bWF0cml4KHJub3JtKG4qcixwYXJhbTEscGFyYW0yKSs1KnJ1bmlmKG4qcixwYXJhbTEscGFyYW0yKSxyKQoJIyMgWlogaXMgb3VyIGV4cGVyaW1lbnRhbCBjb25zdHJ1Y3Rpb24gYnkgbWl4aW5nIG5vcm1hbCBhbmQgdW5pZm9ybSB0b2dldGhlcgoJKQogICAKICAgYWxsLnNhbXBsZS5zdW1zIDwtIGFwcGx5KG15LnNhbXBsZXMsMSxzdW0pCiAgIGFsbC5zYW1wbGUubWVhbnMgPC0gYXBwbHkobXkuc2FtcGxlcywxLG1lYW4pICAgCiAgIGFsbC5zYW1wbGUudmFycyA8LSBhcHBseShteS5zYW1wbGVzLDEsdmFyKSAKICAgcGFyKG1mcm93PWMoMiwyKSkKICAgaGlzdChteS5zYW1wbGVzWzEsXSxjb2w9ImdyYXkiLG1haW49IkRpc3RyaWJ1dGlvbiBvZiBPbmUgU2FtcGxlIikKICAgaGlzdChhbGwuc2FtcGxlLnN1bXMsY29sPSJncmF5IixtYWluPSJTYW1wbGluZyBEaXN0cmlidXRpb25vZgoJdGhlIFN1bSIpCiAgIGhpc3QoYWxsLnNhbXBsZS5tZWFucyxjb2w9ImdyYXkiLG1haW49IlNhbXBsaW5nIERpc3RyaWJ1dGlvbm9mIHRoZSBNZWFuIikKICAgcXFub3JtKGFsbC5zYW1wbGUubWVhbnMsIG1haW49Ik5vcm1hbFByb2JhYmlsaXR5UGxvdCBvZiB0aGUgTWVhbiIpCiMgICBoaXN0KGFsbC5zYW1wbGUudmFycyxjb2w9ImdyYXkiLG1haW49IlNhbXBsaW5nIERpc3RyaWJ1dGlvbm5vZgojCXRoZSBWYXJpYW5jZSIpCn0KYGBgClNlbGVjdCBzb3VyY2UgZGlzdHJpYnV0aW9uIGFzIGV4cG9uZW50aWFsIApgYGB7cn0Kc2RtLnNpbSgyLHNyYy5kaXN0PSJFIixwYXJhbTE9MSkKYGBgCgpgYGB7cn0KY3VydmUoZGV4cCh4LDEpLDAsMykKYGBgClVuaWZvcm0gCmBgYHtyfQpzZG0uc2ltKDUwMCxzcmMuZGlzdD0iVSIscGFyYW0xPTAscGFyYW0yPTEpCmBgYApCZXJub3VsbGkgYW5kIEJpbm9taWFsIApgYGB7cn0Kc2RtLnNpbSgyLHNyYy5kaXN0PSJCIixwYXJhbTE9MSxwYXJhbTI9LjQpCmBgYAoKYGBge3J9CnNkbS5zaW0oMjAwLHNyYy5kaXN0PSJCIixwYXJhbTE9MSxwYXJhbTI9LjUpCmBgYApOb3JtYWwKYGBge3J9CnNkbS5zaW0oMixzcmMuZGlzdD0iTiIscGFyYW0xPTEscGFyYW0yPTQpCmBgYAoKYGBge3J9CnNkbS5zaW0oMjAwLHNyYy5kaXN0PSJaIixwYXJhbTE9MCxwYXJhbTI9MSkKYGBgClpaCmBgYHtyfQpzZG0uc2ltKDIwMCxzcmMuZGlzdD0iWloiLHBhcmFtMT0wLHBhcmFtMj0xKQpgYGAKCg==