Skip to content

Instantly share code, notes, and snippets.

@slingamn
Created December 6, 2012 07:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save slingamn/4222357 to your computer and use it in GitHub Desktop.
Save slingamn/4222357 to your computer and use it in GitHub Desktop.
central limit theorem demonstration
#!/usr/bin/python
import math
import random
def bernoulli(p=0.5):
"""Bernoulli random variable with parameter p."""
return 1 if random.random() < p else 0
def bernoulli_sum(n, p=0.5):
"""Sum of n Bernoulli random variables (ranges between 0 and n)."""
return sum((bernoulli(p) for _ in xrange(n)))
def bernoulli_avg(n, p=0.5):
"""Average of n Bernoulli random variables (ranges between 0 and 1)."""
return bernoulli_sum(n, p) / float(n)
if __name__ == '__main__':
num_trials = 10
n = 100000
p = .5
sum_mean = n * p
sum_approx_stdev = math.sqrt(n * p * (1-p))
avg_mean = p
avg_approx_stdev = math.sqrt(p * (1-p) / n)
print "Sums of %d Bernoulli random variables with parameter %f, mean = %f, stdev approx %f" % (n, p, sum_mean, sum_approx_stdev)
for _ in xrange(num_trials):
print bernoulli_sum(n, p)
print "Averages of %d Bernoulli random variables with parameter %f, mean = %f, stdev approx %f" % (n, p, avg_mean, avg_approx_stdev)
for _ in xrange(num_trials):
print bernoulli_avg(n, p)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment