Часто приходится слышать, что математика, включая статистику и теорию вероятностей с комбинаторикой, не слишком нужна разработчику. Что ж, в некоторых случаях это действительно так. Но для представителей ряда направлений всё это нужно. Кому именно требуется теория вероятностей с сопутствующими дисциплинами и зачем? Об этом поговорим под катом. И сразу хочу пояснить, что статья предназначена для начинающих специалистов.  Аналитикам и специалистам по Data Science. Им крайне нужны твёрдые знания по таким направлениям: Оценка надёжности результатов. В этом случае теорию вероятностей применяют для проверки результатов экспериментов, для подтверждения надёжности этих результатов. Теория вероятностей даёт возможность проверить, не случайны ли полученные результаты. Анализ неопределённости. Здесь теория даёт возможность оценить вероятности и риски появления разных исходов и событий. Моделирование данных. Помогает в разработке моделей для выявления взаимосвязи между различными переменными, что в ряде случаев позволяет предсказать будущие значения системы. Предсказание результатов. Теория вероятностей позволяет спрогнозировать будущие результаты на базе уже имеющихся данных. В частности, так можно смоделировать поведение пользователей при изменении интерфейса ПО или добавлении/удалении функций, показатели эффективности бизнес-процессов и т. п. Анализ временных рядов. Модели, построенные на базе теории вероятностей, могут предсказать изменение показателей, которые зависят от большого количества разных факторов. Если речь идёт о бизнесе, то это, например, расходы и доходы. Анализ случайных чисел. Разработчики анализируют генерацию случайных чисел, что часто нужно для проверки стойкости криптографических алгоритмов. Если случайные числа окажутся не совсем случайными, то злоумышленники могут разработать эксплоиты для того, чтобы воспользоваться уязвимостью. Анализ стойкости шифров. Теория вероятностей помогает определить, насколько реально расшифровать данные/сообщения, если у конечного пользователя нет ключа шифрования. Также различные методы, базирующиеся на теории вероятности, дают возможность определить стойкость алгоритма шифрования перед началом его использования. Аналогичным образом теория вероятностей позволяет разрабатывать новые, более стойкие криптографические алгоритмы. Изучение протоколов аутентификации. Разработчики, используя теорию вероятностей, получают возможность проанализировать безопасность и стойкость протоколов аутентификации. Это направление крайне важно для большинства отраслей IT. Байесовская сеть. На Хабре о байесовских сетях писали и не раз. Они широко применяются в таких областях, как медицина, стратегическое планирование, финансы и экономика, а также используются при разработке и анализе машинных алгоритмов обучения. Их применяют для классификации, регрессии, кластеризации и ряда других задач машинного обучения. Марковские модели. Тоже одна из наиболее популярных тем на Хабре. Их используют для анализа последовательностей разных данных, включая аудио, тексты. Модели дают возможность прогнозировать будущие значения и классифицировать последовательности. Скрытые марковские модели. А это уже модели, которые тоже применяют для анализа последовательностей данных, но таких, где каждое состояние не наблюдается напрямую. Вместо этого его можно выводить из наблюдаемых данных. Гауссовский процесс. Это вероятностная модель, которая используется для аппроксимации сложных функций. Процесс можно применять, в частности, для прогнозирования временных рядов, моделирования неопределённости в данных и ряда других задач. Метод максимального правдоподобия. Он позволяет оценивать параметры вероятностной модели на основе имеющихся данных. Использовать его можно для обучения моделей машинного обучения, включая линейную и логистическую регрессию. Один из простых, но наглядных примеров теории вероятностей в разработке — кейс корпорации Apple ещё времён разработки плеера iPod. Разработчики тогда воспользовались генератором случайных чисел для того, чтобы перемешивать пользовательские треки. Но после выхода устройства в продажу сразу же появилось много жалоб — как оказалось, плеер нередко пускал подряд проигрывание одной и той же композиции, а некоторые из них проигрывались чаще, чем другие. В общем, пришлось исправлять ситуацию, добавив проверку совпадений в плейлисте воспроизводимых композиций. Вот пример использования функции random в Python, которая приводит к неожиданному со стороны пользователя результату: >>> import random >>> print(*[random.randint(1, 12) for i in range(12)]) 9 9 9 6 2 3 5 9 8 12 10 4 Ну а после того как вводится проверка на совпадение треков, ситуация налаживается. В Python, к слову, есть алгоритм, который позволяет решить указанную проблему: >>> lst = [int(i) for i in range(1, 13)] >>> random.shuffle(lst) >>> print(*lst) 9 6 1 10 12 2 7 5 11 4 8 3 Казалось бы, просто плейлист, перемешивание композиций, а без математики не обойтись. Так что в том либо ином виде она нужна многим разработчикам — даже тем, кто считает, что без математики и теории вероятностей в частности можно обойтись. Книг по указанным выше темам достаточно много. Из всего этого разнообразия приведу подборку на основе собственных предпочтений: «Элементарное введение в теорию вероятностей». Авторы: Б. В. Гнеденко, А. Я. Хинчин. «Задачник-практикум по теории вероятностей с элементами комбинаторики и математической статистики». Авторы: Н. Я. Виленкин, В. Г. Потапов. «Руководство к решению задач по теории вероятностей и математической статистике». Автор: В. Е. Гмурман. «Теория вероятностей и математическая статистика». Автор: Н. Ш. Кремер. «Сборник задач по теории вероятностей». Авторы: А. М. Зубков,  Б. А. Севастьянов.  «Теория вероятностей и математическая статистика. Конспект лекций». Авторы: А. И. Волковец, А. Б. Гуринович. Как и говорилось в самом начале, статья предназначена для начинающих разработчиков. Большинство книг из подборки выше хорошо знакомы профессионалам, а вот новичкам крайне рекомендуется ознакомиться как с этими книгами, так и с другими. Необязательно лезть в дебри, если, конечно, вы не специалист по машинному обучению или другой отрасли, где крайне нужна математика. Но основы желательно знать.