Статья подготовлена для студентов курса «Разработчик C++» в образовательном проекте OTUS. Возможность генерации случайных чисел необходима для работы некоторых программ, например, игр или приложений научно-статистического моделирования. В игре без рандомных событий монстры будут атаковать вас одинаково, вы будете постоянно находить одни и те же артефакты и т. д. Именно поэтому уметь генерировать случайные числа — обязанность любого программиста. Случайные и псевдослучайные числа. В чём разница? В реальной жизни, чтобы получить случайный результат мы кидаем кости или тасуем колоду карт...
Генераторы случайных чисел являются чрезвычайно важной составляющей многих алгоритмах, к примеру, алгоритмов шифрования или численных методов Монте-Карло. Как известно, компьютеры являются детерминированными, предсказуемыми машинами. Если написать программу и выполнить ее при тех же условиях миллион раз, то вы получите миллион одинаковых ответов. Такая природа компьютеров очень хорошо служила нам на протяжении большей части прошлого века, но, к сожалению, эта конструкция имеет фундаментальный недостаток: компьютеры не могут выполнять случайные операции...