Задание
Написать программу, которая будет спрашивать пользователя, сколько дней рождения программа должна сгенерировать и он сразу генерирует и выводит пользователю список дней рождения. Далее она пишет , есть ли совпадающие дни рождения или нету, и затем генерирует 100000 симуляций. И проводит симуляции. А в конце программа пишет, из 100000 симуляций были совпадающие дни рождения столько-то раз. Это означает, что сколько-то человек с вероятностью столько-то процентов имеют одинаковый день рождения в своей группе.
Функционал программы
Функционал простой. Программа спрашивает , сколько дней рождения нужно сгенрировать и выводит пользователю список дней рождения. Далее она пишет, есть ли совпадающие дни рождения или нету, и затем генерирует 100000 симуляций. Провела 10000 симуляций, и в конце программа пишет, что из 100000 симуляций были совпадающие дни рождения столько-то раз. Это означает, что сколько-то человек с вероятностью столько-то процентов имеют одинаковый день рождения.
Фрагмент программного кода
def getMatch(birthdays): if len(birthdays) == len(set(birthdays)): return None for a, birthdayA in enumerate(birthdays): for b, birthdayB in enumerate(birthdays[a+1 :]): if birthdayA == birthdayB: return birthdayA print(''"Парадокс дней рождения") MONTHS = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec') while True: print('Сколько дней рождения я должен сгенерировать? (Максимум 100)') response = input('> ') if response.isdecimal() and (0 < int(response) <= 100): numBDays = int(response) break print() print('Вот', numBDays, 'дня рождения:') birthdays = getBirthdays(numBDays) for i, birthday in enumerate(birthdays): if i != 0: print(',', end='') monthName = MONTHS[birthday.month - 1] dateText = '{} {}'.format(monthName, birthday.day) print(dateText, end='') print() print() match = getMatch(birthdays) print('В этой симуляции,', end='') if match != None: monthName = MONTHS[match.month - 1] dateText = '{} {}'.format(monthName, match.day) print('у нескольких людей день рождения на', dateText) else: print('нет совпадающих дней рождения.') print()
Cкриншот архива с проектом
Содержание архива
Папка с проектом paradoxbirthdaydays в PyCharm.
Пояснения по запуску программы
Создать на компьютере папку Projects и поместить туда проект paradoxbirthdaydays. Открыть PyCharm и нажать правой кнопкой мыши на верхнюю вкладку и нажать Run main. И запустится программа.
platonlaptev