Троан Эрик В.
Шрифт:
Глава 19
Случайные числа
Слово случайный имеет разный смысл для разных программистов в различное время. Для большинства приложений оказываются достаточно эффективными псевдослучайные числа, предусмотренные библиотекой С. Благодаря тому, что псевдослучайные числа позволяют воспроизводить первоначальные условия, если это необходимо (например, с целью отладки), они оказываются предпочтительнее действительно случайных чисел.
Однако некоторые приложения (включая криптографические) для достижения наилучших результатов требуют использования действительно случайных чисел. Ядро Linux для предоставления криптографически устойчивых случайных чисел производит выборку событий из непредсказуемого внешнего мира.
Все компьютеры поддаются прогнозированию. В большинстве задач, которые мы поручаем компьютеру, предсказуемость является наиболее важным обстоятельством. Даже если в вашей программе появляются ошибки, необходимо, чтобы их возникновение было предсказуемым, иначе вы не сможете найти их и ликвидировать.
19.1. Псевдослучайные числа
В некоторых ситуациях все же требуется обеспечить невозможность прогнозирования. Библиотека С содержит функции для генерирования ожидаемых последовательностей псевдослучайных чисел. Эти функции легки в применении и являются одинаковыми на всех платформах Unix. Рассмотрим пример типичного использования данных функций.
Общепринято в качестве начального значения для генератора псевдослучайных чисел задавать текущую дату в формате, возвращаемом функцией
Числа, возвращаемые функцией