frosty7777777
@frosty7777777

Сколько нужно завести друзей в Facebook, чтобы с вероятностью близкой к 100% каждый день в году поздравлять с днем рождения хотя бы одного друга?

Интересная задача.

Более конкретная постановка: Пустой массив постепенно заполняется элементами. Каждый элемент хранит в себе числовое значение в диапазоне от 0 до 365, выбранное случайным образом.

Вопрос:

Сколько нужно добавить элементов в массив, чтобы с вероятность P каждое число от 0 до 365 содержалось в нем хотя бы один раз.

Вероятность P:

1) 25%
2) 50%
3) 75%
4) ~99%
5) 100%

Может быть, это можно красиво посчитать в Mathematica?
  • Вопрос задан
  • 2929 просмотров
Решения вопроса 1
Mrrl
@Mrrl
Заводчик кардиганов
Если надо найти точную вероятность того, что все дни рождения заполнены, то формула получается сложной. Эквивалентная формулировка - найти количество M-значных чисел в системе счисления по основанию N, в которых встречаются все N цифр.
Рассматриваем наборы из N чисел a1,a2,a3,...,aN, для которых ai>=0 и a1+a2+...+aN=M-N, и по всем таким наборам (их С(M-1,N-1), наборы с разным порядком считаются разными) считаем сумму S величин 1^a1+2^a2+...+N^aN. Тогда искомое количество чисел равно S*N!, а искомая вероятность - S*N!/(N^M).
Приближенную вероятность, когда M заметно больше N, найти проще. Вероятность того, что в определённый день ни одного дня рождения не будет, равна (1-1/N)^M, и вероятность того, что хотя бы один день рождения будет каждый день - (1-(1-1/N)^M)^N (здесь мы считаем события независимыми, что вообще говоря, неправда). При больших N и M/N это можно оценить как exp(-N*exp(-M/N)). Если N=365, то для достижения вероятности 99% нужно 3833 друга, а для 99.9% - 4675 друзей.
Наличие 29 февраля ещё несколько усложняет картину.
Ответы на вопросы 1-5 при N=366: 2041, 2295, 2617, 3844, бесконечность.

Уточнение: число S, которое получается в точном решении, это число Стирлинга второго рода S(M,N). По ссылке есть простая явная формула.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
maaGames
@maaGames
Погроммирую программы
Достаточно 366 друзей, которые были добавлены целенаправленно с не повторяющимися датами. Условие задачи не запрещает такого решения.
Ответ написан
gbg
@gbg
Любые ответы на любые вопросы
Это почти "Парадокс дней рождения". Каждому другу соответствует число от 0 до 365. Таким образом, N друзей порождают число в системе счисления по основанию 366. Нужно комбинаторно вычислить количество таких чисел M, в которых содержатся все различные цифры, для каждого N. Отношение M/(366^N) и будет вашей вероятностью.

Очевидно, что нужно рассматривать N>=366

М - число всевозможных расстановок 366 цифр по N местам, свободные места можно заполнить любыми цифрами. Для N=366 это 366!, что дает вероятность 10^-158 степени.

С увеличением N, формула для числа M усложнится, это будет M=(366!)*(биномиальный коэффициент из 366 по N-366).
Считайте.
Ответ написан
Комментировать
Lerg
@Lerg
Defold, Corona, Lua, GameDev
Вам нужно распределение дней рождений по региону, в котором ищите друзей. И на основе этого распределения считать доверительные интервалы для каждого дня... Математика может быть несколько сложной, но зато определённо можно написать программку, эмулирующую заданное распределение, добавлять N друзей и смотреть покрыли ли они весь год или нет. Прогнать для каждого N алгоритм 1000 раз и получите практическую вероятность для заданного N. Затем подбираете N пока не получите нужную вероятность (99%, 99.9%).
Ответ написан
Комментировать
vato35
@vato35
ИТ-специалист, занимаюсь инвестиционными проектами
Социологам известен феномен, заключающийся в том, что на некоторые дни в году приходится экстремально высокое и экстремально низкое число рождений. Особенно - в Юго-Восточной Азии. Поэтому задача имеет математическое, но не прикладное решение.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы