Статья добавлена 22 августа 2009, в субботу, в 10:46. С того момента...
3205 |
просмотров |
0 | добавлений в избранное |
1 | комментарий |
Представлена в разделах:
Генератор случайных чисел - узнаем теорию
Все технические моменты, которые нужно знать о генераторе случайных чисел, обсуждаются в данной статье. Так же приведены основные функции, которые используются при его создании.
Про генератор случайных чисел
Все события и процессы в мире бывают закономерные и случайные. Давайте-ка попытаемся взглянуть на случайные процессы с точки зрения программиста, ведь о событиях, которые происходят закономерно нам все известно. В языке программирования для получения случайных чисел разработан специализированный механизм, который называется – генератор случайных чисел. Все события завязаны на системном таймере, поэтому, его генерация действует не случайным образом. Случайные числа как раз и образуются исходя из данного системного таймера. Поэтому верно будет называть этот механизм – генератор псевдослучайных чисел,хотя при алгоритмах современных функций результат извлечения действительно оказывается случайным. Все процессы, которые существуют в программировании, взаимодействуют с пользователем по средством операторов. Посмотрим на них по подробнее.
Функции rand, srandВ программировании на языке С большую роль играет регистр, соответственно в ущерб привлекательности данного заголовка, имена операторов написаны с прописной буквы. Из этого вытекает, что нужно гнаться за точностью, а не за картинкой. В программировании за выбор случайных чисел отвечает оператор rand. Взглянем на примере, как нам надо использовать функцию:int c = rand();
Т.е. как вы видите из указанногопримера, функция rand возвращает целое значение. Причем диапазон данного числа изменяется от нуля до константы, которая задается в подключаемой директиве, содержащей оператор. Ну а теперь можно и запустить несколько раз текущую программу, которая будет выводить на монитор случайное значение. К сожалению, результат, при каждом запуске, будет каждый раз выводится одно и то же значение. При компиляции программы, эта функция rand отлажила в памяти определенное системное время и при запуске всегда обращается к этому времени. Но и для решенияэтой проблемы мозговитые программисты разработали оператор srand. Обязанность данной функции очень простая– если мы обращаемся к функции rand, то системный таймер обнуляется. В результате чего, перед каждым обращением к текущему оператору rand, системное время обнуляется, следовательно мы будем получать разные значение.
Функция randomНа самом деле, предвидущих двух операторов достаточно, что б создать любой сложности программы, требующие генератор случайных чисел. Наконец, в язык программирования си ++ внедрили оператор random. Он включает в себя пару усовершенствований: увеличен диапазон результатов; процесс получения случайных чисел стал идеальным.
ты это сча с кем разговаривал?