Генератор случайных чисел Перед тем что бы понять принцип работы генератора случайных чисел, давайте прежде ответим на поставленный вопрос: «Чем по сути являются случайные числа?» На практике это продемонстрировать просто: цифры, которые лезут в голову, разом воспроизводить вслух. Для воплощения случайных чисел на компьютере применяют генератор случайных чисел. Правда этот генератор выдает псевдослучайные числа, т.е. числа сгенерированные не наобум, а завязанные на определенном алгоритме. В основном данный алгоритм базируется на системном таймере, а именно на микросекундах, при помощи которых и образуются случайные числа. Для получения случайных чисел, в большинстве языков программирования – как старых, так и новых – существуют специальные операторы, которые выполняются по одному и тому же алгоритму, но, возможно, называются по разному. На ресурсе по программированию на языках c sharp и си показывается пример генератора случайных чисел на с. Так что давайте-ка рассмотрим основные операторы вызова случайных цифр. Функция rand Функция rand выдает любое неотрицательное значение от нуля до заданной константы, которая объявлена в подключаемом файле. Можно, естественно, и менять разрешенные интервалы значений. Поэтому надо применять математические операции: деление, умножение, вычитание, сложение. Функция srand В случае если вы опробовали работу оператора rand и запустили множество раз созданную программу, то к вашему расстройству числа каждый раз получались идентичными.Объяснение скрывается в самой функции rand, которая, при компиляции исполняемого файла в программу, запоминает системное время. В следствие чего, при генерации случайного числа в алгоритме будет задействовано то же самое значение времени. т.е., но будет это же значение при любом старте программы. В целях выхода из данной неприятной ситуации программисты используют оператор srand, который в момент запуска оператора rand, обращается к текущему времени, что позволяет возвращать каждый раз новое число. Функция random Оператор random является всего лишь небольшой доработкой оператора rand. Ее интервал значений в разы превосходит оператор rand, что позволяет оперировать громадными величинами, а так же изменен алгоритм образования случайных чисел. т.е. функция rand работала с миллисекундами, а оператор random имеет возможность взаимодействовать с микросекундами. Поэтому псевдослучайные значения при использовании оператора могут вполне значиться случайными. Данные знания старайтесь закреплять практикой в программировании на си. Об Авторе: www.mir-koda.ru
|