#!/usr/bin/env python # -*- coding: utf-8 -*- """ Statistics on coin flipping series of given number of coins. Comparison with infinite mean solution : binomial distribution and Pascal's triangle. """ import numpy as np import matplotlib import matplotlib.pyplot as plt import random import collections def nheads(n): """ return number of heads for n equally likely outcomes coin flipping """ return sum([random.choice(values) for i in range(n)]) values = [0,1] # tail or head nflips = 10 # Pascal's triangle : pt = [[1],[1,1]] for i in range(len(pt),nflips+1): pt.append([1]+[pt[i-1][j-1] + pt[i-1][j] for j in range(1,i)]+[1]) print(pt[nflips], sum(pt[nflips])) # theoretical distribution nb = 102400 heads = [nheads(nflips) for j in range(nb)] #print heads c = collections.Counter(heads) for i in range(nflips+1): print(i,c[i],pt[nflips][i])