Сколько нужно завести друзей в Facebook, чтобы с вероятностью близкой к 100% каждый день в году поздравлять с днем рождения хотя бы одного друга? Интересная задача. Более конкретная постановка: Пустой массив постепенно заполняется элементами. Каждый элемент хранит в себе числовое значение в диапазоне от 0 до 365, выбранное случайным образом. Вопрос: Сколько нужно добавить элементов в массив, чтобы с вероятность P каждое число от 0 до 365 содержалось в нем хотя бы один раз. Вероятность P: 1) 25% 2) 50% 3) 75% 4) ~99% 5) 100% Может быть, это можно красиво посчитать в Mathematica?
В этом коде мы создаем функцию probability, которая для заданного числа элементов n и вероятности p считает вероятность того, что каждое число от 0 до 365 содержится в массиве хотя бы один раз. Затем мы запускаем эту функцию для разных значений n и искомых вероятностей p.
Результат выполнения кода будет выводить вероятность для каждого значения p в таблице.
Да, конечно, задачу можно решить в Mathematica с помощью симуляций Монте-Карло. Для этого можно написать следующий код:
probability[n_, p_] := Module[{count, success},count = 0;
Do[
success = False;
Do[
If[Length[Union[RandomInteger[365, i]]] == 366,
success = True; Break[]], {j, n}];
If[success, count++], {k, 1000}];
count/1000]
nvalues = {572, 244, 153, 102, 95};
Table[probability[nvalues[[i]], i/4], {i, 1, 5}]
В этом коде мы создаем функцию probability, которая для заданного числа элементов n и вероятности p считает вероятность того, что каждое число от 0 до 365 содержится в массиве хотя бы один раз. Затем мы запускаем эту функцию для разных значений n и искомых вероятностей p.
Результат выполнения кода будет выводить вероятность для каждого значения p в таблице.