Найти тему
D21nk Master

Как это случайное число не случайно?

В предыдущей статье мы узнали об логических операторах и об их ответвлениях.Сегодня разберём новые функции и случайные числа в си.

Сначала изучим необходимые функции и затронем две библиотеки для этого:

Библиотека time.h содержит функции для работы со временем и не только,о чём мы ещё поговорим.

Библиотека stdlib.h стандартная библиотека языка си,в которой содержатся различные функции и не только.

Функция system выполняет аргумент,переданный строкой как консольную команду: system("pause");

Функция rand генерирует случайное число: rand(); .Как видите аргументы не нужны,но есть одна проблема,которую предлагаю рассмотреть в коде:

#include <stdio.h>
#include <stdlib.h> //стандартная библиотека с функцией rand()
void main()
{
printf("%d\n",rand());
system("pause"); //команда pause есть только в windows
}

Соберите эту программу и запустите дважды подряд.В windows такой код теперь не обязательно запускать a.exe && pause.Функция system всё сделает за вас.

Довольно странно что случайное число повторяется.Какое же оно тогда случайное?Давайте это исправим.

Функция srand изменяет счёт случайного числа от аргумента.Как правило,применяют то значение,которое постоянно изменяется.Например время.

Функция time возвращает текущее время в секундах,как раз то значение,которое постоянно меняется.Принимает аргументом начало отсчёта,мы возьмём нуль.

Перед их применением узнаем ещё кое-что о языке си.Число 0 в си не считается "пустым",оно занимается всё же какое-то место.Чтобы пока вас не путать скажу что "абсолютный" нуль в си записывается как "NULL".Теперь посмотрим что получается:

srand(time(NULL)); //мы использовали функцию как аргумент в другой функции

#include <stdio.h>
#include <stdlib.h>
#include <time.h> //тут содержится функция time
void main()
{
srand(time(NULL));//сначала настраиваем "случайность"
printf("%d\n",rand());
}

Теперь соберите программу и проверьте "случайность" наших чисел.Воуля,вы восхитительны!

В следующей статье мы наконец соберём полезную программу,в которой применим полученные знания,а эта статья подходит к концу,надеюсь она вам понравилась.Желаю успехов!