This document shows some commands useful to graphically “verify” the central limit theorem in the case of a uniform random variable.

The following runif function returns 5 random numbers from the uniform distribution in the range [0, 1]:

runif(5)

The following command replicates 3 times the same runif operation:

(Three_Uniforms <- replicate(3, runif(5)))
           [,1]       [,2]      [,3]
[1,] 0.02060323 0.04297248 0.1098457
[2,] 0.51377947 0.60048804 0.7811531
[3,] 0.70079159 0.47820034 0.5956885
[4,] 0.09655685 0.37621419 0.3623097
[5,] 0.96948797 0.50981652 0.1081516

Since we are interested in whatever linear combination of these three uniforms, we can consider their mean. Since each variable is in a column, the mean is computed row-wise:

rowMeans(Three_Uniforms)
[1] 0.05780712 0.63180687 0.59156014 0.27836025 0.52915202

We can combine the following commands in a unique “longer” call:

rowMeans(replicate(3, runif(5)))
[1] 0.1951196 0.5269952 0.2666821 0.6649161 0.1958799

NOTE!! The numbers are random, that’s why you obtain different values between the two previous calls.

Let us now generalize to the case of 30 Uniform r.v.’s. We now use 1000 numbers (instead of 5), so to have a better approximation:

num_variables <- 30
num_replications <- 1000
row_wise_means <- rowMeans(replicate(num_variables, runif(num_replications)))

Following the histogram of the mean of the Uniforms. This mean approximately follows a Normal Distribution, as you can see from the superimposed red line. In order to draw such a line, I chose proper values for the mean and the standard deviation… How did I choose them?

library(MASS) # needed for the truehist function
x <- seq(min(row_wise_means), max(row_wise_means), length.out = 200)
truehist(row_wise_means)
lines(x, dnorm(x, mean = 0.5, sd = 1/(sqrt(12)*sqrt(30))), col = 'red', lwd = 1.5)

You are invited to change the original distribution you sample from and/or the number of variables, in order to check the effects on the convergence.

LS0tCnRpdGxlOiAiQSBncmFwaGljYWwgZXhwbG9yYXRpb24gb2YgdGhlIGNlbnRyYWwgbGltaXQgdGhlb3JlbSIKYXV0aG9yOiAiRG9tZW5pY28gVmlzdG9jY28iCmRhdGU6ICJCUyBDbGFzcyAtIExlY3R1cmUgb2YgMTAtMTEvMTAvMjAxNiIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKVGhpcyBkb2N1bWVudCBzaG93cyBzb21lIGNvbW1hbmRzIHVzZWZ1bCB0byBncmFwaGljYWxseSAidmVyaWZ5IiB0aGUgY2VudHJhbCBsaW1pdCB0aGVvcmVtIGluIHRoZSBjYXNlIG9mIGEgdW5pZm9ybSByYW5kb20gdmFyaWFibGUuCgpUaGUgZm9sbG93aW5nIGBydW5pZmAgZnVuY3Rpb24gcmV0dXJucyA1IHJhbmRvbSBudW1iZXJzIGZyb20gdGhlIHVuaWZvcm0gZGlzdHJpYnV0aW9uIGluIHRoZSByYW5nZSBbMCwgMV06CmBgYHtyfQpydW5pZig1KQpgYGAKClRoZSBmb2xsb3dpbmcgY29tbWFuZCByZXBsaWNhdGVzIDMgdGltZXMgdGhlIHNhbWUgYHJ1bmlmYCBvcGVyYXRpb246IApgYGB7cn0KKHRocmVlX3VuaWZvcm1zIDwtIHJlcGxpY2F0ZSgzLCBydW5pZig1KSkpCmBgYAoKU2luY2Ugd2UgYXJlIGludGVyZXN0ZWQgaW4gd2hhdGV2ZXIgbGluZWFyIGNvbWJpbmF0aW9uIG9mIHRoZXNlIHRocmVlIHVuaWZvcm1zLCB3ZSBjYW4gY29uc2lkZXIgdGhlaXIgbWVhbi4KU2luY2UgZWFjaCB2YXJpYWJsZSBpcyBpbiBhIGNvbHVtbiwgdGhlIG1lYW4gaXMgY29tcHV0ZWQgcm93LXdpc2U6CmBgYHtyfQpyb3dNZWFucyhUaHJlZV9Vbmlmb3JtcykKYGBgCgpXZSBjYW4gY29tYmluZSB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIGluIGEgdW5pcXVlICJsb25nZXIiIGNhbGw6IApgYGB7cn0Kcm93TWVhbnMocmVwbGljYXRlKDMsIHJ1bmlmKDUpKSkKYGBgCioqTk9URSEhKiogVGhlIG51bWJlcnMgYXJlICpyYW5kb20qLCB0aGF0J3Mgd2h5IHlvdSBvYnRhaW4gZGlmZmVyZW50IHZhbHVlcyBiZXR3ZWVuIHRoZSB0d28gcHJldmlvdXMgY2FsbHMuCgpMZXQgdXMgbm93IGdlbmVyYWxpemUgdG8gdGhlIGNhc2Ugb2YgMzAgVW5pZm9ybSByLnYuJ3MuIFdlIG5vdyB1c2UgMTAwMCBudW1iZXJzIChpbnN0ZWFkIG9mIDUpLCBzbyB0byBoYXZlIGEgYmV0dGVyIGFwcHJveGltYXRpb246CmBgYHtyfQpudW1fdmFyaWFibGVzIDwtIDMwCm51bV9yZXBsaWNhdGlvbnMgPC0gMTAwMApyb3dfd2lzZV9tZWFucyA8LSByb3dNZWFucyhyZXBsaWNhdGUobnVtX3ZhcmlhYmxlcywgcnVuaWYobnVtX3JlcGxpY2F0aW9ucykpKQpgYGAKCkZvbGxvd2luZyB0aGUgaGlzdG9ncmFtIG9mIHRoZSBtZWFuIG9mIHRoZSBVbmlmb3Jtcy4gVGhpcyBtZWFuIGFwcHJveGltYXRlbHkgZm9sbG93cyBhIE5vcm1hbCBEaXN0cmlidXRpb24sIGFzIHlvdSBjYW4gc2VlIGZyb20gdGhlIHN1cGVyaW1wb3NlZCByZWQgbGluZS4gSW4gb3JkZXIgdG8gZHJhdyBzdWNoIGEgbGluZSwgSSBjaG9zZSBwcm9wZXIgdmFsdWVzIGZvciB0aGUgbWVhbiBhbmQgdGhlIHN0YW5kYXJkIGRldmlhdGlvbi4uLiBIb3cgZGlkIEkgY2hvb3NlIHRoZW0/CmBgYHtyfQpsaWJyYXJ5KE1BU1MpICMgbmVlZGVkIGZvciB0aGUgdHJ1ZWhpc3QgZnVuY3Rpb24KCnggPC0gc2VxKG1pbihyb3dfd2lzZV9tZWFucyksIG1heChyb3dfd2lzZV9tZWFucyksIGxlbmd0aC5vdXQgPSAyMDApCnRydWVoaXN0KHJvd193aXNlX21lYW5zKQpsaW5lcyh4LCBkbm9ybSh4LCBtZWFuID0gMC41LCBzZCA9IDEvKHNxcnQoMTIpKnNxcnQoMzApKSksIGNvbCA9ICdyZWQnLCBsd2QgPSAxLjUpCmBgYAoKCllvdSBhcmUgaW52aXRlZCB0byBjaGFuZ2UgdGhlIG9yaWdpbmFsIGRpc3RyaWJ1dGlvbiB5b3Ugc2FtcGxlIGZyb20gYW5kL29yIHRoZSBudW1iZXIgb2YgdmFyaWFibGVzLCBpbiBvcmRlciB0byBjaGVjayB0aGUgZWZmZWN0cyBvbiB0aGUgY29udmVyZ2VuY2Uu