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