Lecture Notes on 14 July 2014 # Solution to Samuel Pepys problem import random def main(): # number of trials num_trials = 1000 # trial 1: 6 throws of a fair die trial_1 = 0 for i in range (num_trials): is_six = 0 for j in range (6): if (random.randint (1, 6) == 6): is_six += 1 if (is_six >= 1): trial_1 += 1 print ('Trial 1: ', trial_1, '/', num_trials) # trial 2: 12 throws of a fair die trial_2 = 0 for i in range (num_trials): is_six = 0 for j in range (12): if (random.randint (1, 6) == 6): is_six += 1 if (is_six >= 2): trial_2 += 1 print ('Trial 2: ', trial_2, '/', num_trials) # trial 3: 18 throws of a fair die trial_3 = 0 for i in range (num_trials): is_six = 0 for j in range (18): if (random.randint (1, 6) == 6): is_six += 1 if (is_six >= 3): trial_3 += 1 print ('Trial 3: ', trial_3, '/', num_trials) main() # Solution to the Birthday Paradox Problem import random def compute_prob (num_students, num_trials): same_bday = 0 for i in range (num_trials): bdays = '' is_same = 0 for j in range (num_students): # generate random birthdays and check b_num = random.randint (1, 365) b_str = ":" + str (b_num) + ":" if (bdays.find (b_str) > -1): is_same += 1 bdays = bdays + b_str if (is_same > 0): same_bday += 1 print ('Students ' + str (num_students) + ' : ' + str (same_bday) + \ ' / ' + str (num_trials)) def main(): num_trials = 1000 for i in range (2, 366): compute_prob (i, num_trials) main()