In [79]:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
%matplotlib inline
In [110]:
birthdays = np.random.randint(0, 366, size=(1000, 2000))
In [111]:
num_birthdays = np.empty_like(birthdays)
In [112]:
for i, trial in enumerate(birthdays):
s = set()
for j, birthday in enumerate(trial):
s.add(birthday)
num_birthdays[i, j] = len(s)
In [113]:
avg_num_birthdays = num_birthdays.mean(axis=0)
In [116]:
print np.where(avg_num_birthdays > 364)[0].min()
In [141]:
fig, axis = plt.subplots(1, figsize=(7, 5))
for trial in num_birthdays:
axis.plot(trial, color='gray', alpha=0.5)
axis.plot(avg_num_birthdays, color='black', linewidth=3, label='Average')
axis.axhline(y=365, color='red', linestyle='--', zorder=-1)
axis.text(100, 370, 'All 365 Days', fontsize=12)
axis.legend(loc='best', fontsize=12)
axis.set_xlabel('Number of Friends', fontsize=12)
axis.set_ylabel('Number of Unique Birthdays', fontsize=12)
plt.tight_layout()
plt.savefig('/Users/spardy/Code/Web/Blog/images/BirthdaysperFriend.jpeg')
In [82]:
wikipedia_calendar = pd.read_csv('/Users/spardy/Code/Web/Blog/resources/wikipedia_calendar.csv')
In [118]:
bins = np.cumsum(wikipedia_calendar['Births'])/np.sum(wikipedia_calendar['Births'])
In [129]:
birthdays_prior = np.digitize(np.random.rand(1000, 2500), bins)
In [130]:
num_birthdays_prior = np.empty_like(birthdays_prior)
In [131]:
for i, trial in enumerate(birthdays_prior):
s = set()
for j, birthday in enumerate(trial):
s.add(birthday)
num_birthdays_prior[i, j] = len(s)
In [132]:
avg_num_birthdays_prior = num_birthdays_prior.mean(axis=0)
In [135]:
print np.where(avg_num_birthdays_prior > 364)[0].min()
In [134]:
avg_num_birthdays_prior.max()
Out[134]:
In [103]:
fig, axis = plt.subplots(1, figsize=(7, 5))
for trial in num_birthdays:
axis.plot(trial, color='gray', alpha=0.5)
axis.plot(avg_num_birthdays, color='black', linewidth=3)
axis.axhline(y=365, color='red', linestyle='--', zorder=-1)
axis.set_xlabel('Number of Friends')
axis.set_ylabel('Number of Days with Birthdays')
Out[103]:
In [107]:
plt.plot(wikipedia_calendar['Births']/np.sum(wikipedia_calendar['Births']))
Out[107]:
In [ ]: