import matplotlib.pyplot as plt
import numpy as np
import scipy.stats
def run(n):
return np.array([np.random.random(n).sum() - n/2 for _ in xrange(1000000)])
def print_results(results):
print 'n={0}, mean={1}, variance={2}'.format(len(results), results.mean(), results.var())
results_12 = run(12)
print_results(results_12)
n=1000000, mean=-0.000717656474001, variance=0.998229902695
plt.hist(results_12, histtype='step', bins=100, label='results_12')
expected_2_sd = 2
plt.axvline(x=-expected_2_sd, color='red', label='2 standard deviations')
plt.axvline(x=expected_2_sd, color='red')
plt.legend()
<matplotlib.legend.Legend at 0xb00672c>
# Just checking the results also hold for n=24
results_24 = run(24)
print_results(results_24)
plt.hist(results_24, histtype='step', bins=100, label='results_24')
expected_2_sd = 2 * np.sqrt(2)
plt.axvline(x=-expected_2_sd, color='red', label='2 standard deviations')
plt.axvline(x=expected_2_sd, color='red')
plt.legend()
n=1000000, mean=-0.00144243392036, variance=2.00000418534
<matplotlib.legend.Legend at 0xb122b6c>