Помощь - Поиск - Пользователи - Календарь
Полная версия: randomize в С/С++
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
от compiler
Добрый день!
собственно вопрос в заголовке
видел у некого Vort-а реализованно так

#include <stdlib.h>
#include <time.h>
...
srand((int)time(0));
...
одноко автор говорит, что списал это не вникая в подробности... а мне хотелось бы понять суть... итак имеим srand() с библиотеки stdlib, который инициализирует ГСЧ, однако чтоб он генерились при разных запусках программы разные числа необходим дополнительный параметр.
для этого мы используем time из библ. time приводя его в тип int
правильное ли это утверждение и какой параметр получает time?
заранее благодарен.
volvo
Судя по содержимому документации:
Цитата
void srand(unsigned seed);
Вызов srand(n) инициализирует ГСЧ таким образом, что генерируемая случайная последовательность определяется значением аргумента n.
<...>
Чтобы получить непредсказуемую случайную последовательность, следует установить seed равным текущему значению быстро изменяющейся величины, такой как время.
Отсюда плавно переходим к описанию time():

Цитата
time_t time(time_t *thetime);
Возвращает текущую дату и время как число секунд, прошедших с 00:00:00, 1 января 1970 по Гринвичу.
time_t *thetime - необязательный указатель на переменную типа time_t, в которую записывается текущая дата/время (это же значение возвращается функцией time()). Игнорируется, если thetime = 0


А явное приведение типа используется для того, чтобы указать компилятору, что программист сознательно приводит тип к менее емкому (long -> int), понимает, что это может привести к потере данных, но в данном случае это программиста не особо волнует, и Warning можно не выдавать smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.