Форум программистов, компьютерный форум CyberForum.ru

srand(time(0)) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 311, средняя оценка - 4.65
Syltan
181 / 7 / 0
Регистрация: 27.08.2009
Сообщений: 868
05.10.2009, 21:22     srand(time(0)) #1
Тут встретил такое выражение. Вы не скажете, что оно даёт, и как расшифровать этот код

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <time.h>
using namespace std;
 
 
int main(){
    int a;
    srand(time(0));
    a=rand();
    cout<<a;
    cin.get();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rififi
 Аватар для Rififi
2330 / 1045 / 43
Регистрация: 03.05.2009
Сообщений: 2,656
05.10.2009, 21:25     srand(time(0)) #2
строки 2-3 - подключение необходимых заголовочных файлов
4 - lamer detected (:
7 - начало главной функции
9 - инициализация генератора псевдо-случайных чисел
10 - получаем очередное псевдо-случайное число
11 - вывод на экран
12 - ждать реакции пользователя, чтобы он не орал "а чё типа у меня сразу всё закрывается"
13 - алес.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
05.10.2009, 21:40     srand(time(0)) #3
между 12 и 13 строками не хватает:
return 0;
Syltan
181 / 7 / 0
Регистрация: 27.08.2009
Сообщений: 868
05.10.2009, 21:42  [ТС]     srand(time(0)) #4
C++
1
 srand(time(0));
Это место, можно подробнее?
srand - что это?
time - что это?
0 в тайме зачем он?
patriot2008
 Аватар для patriot2008
70 / 70 / 4
Регистрация: 04.12.2008
Сообщений: 463
05.10.2009, 22:06     srand(time(0)) #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
srand - Это инициализация генератора случайных чисел, time - возвращает текущее календарное время системы, в качестве аргумента она принимает указатель на переменную типа time_t, которой и будет присвоено календарное время. Также time можно вызывать и с нулевым указателем (как в даном случае)
Syltan
181 / 7 / 0
Регистрация: 27.08.2009
Сообщений: 868
05.10.2009, 22:21  [ТС]     srand(time(0)) #6
srand без тайма может быть объявлен?
time зависит как-то от сранда, или мранд с таймом должны быть обязательны.
0 - ещё раз можно уточнить,почему 0, а не 1, 5, или 10.
Код
time - возвращает текущее календарное время системы,
Уточнить можно?
patriot2008
 Аватар для patriot2008
70 / 70 / 4
Регистрация: 04.12.2008
Сообщений: 463
05.10.2009, 23:06     srand(time(0)) #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
void srand(unsigned seed) - устанавливает стартовую точку для последовательности, генерируемой функцией rand(). Используется, когда необходимо работать с различными последовательностями псевдослучайных чисел путем задания разных отправных точек (seed - начальное значение). Так понимаю, что в srand() можешь попробовать time не использовать.

0 - нулевой указатель,
Прототип функции выглядит так - time_t time(time_t* time);
Календарное время и возвращается функцией, и помещается в переданный аргумент, но можно передавать нулевой указатель (то есть 0 или null). 0 в даном случае не число, а нулевой указатель.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
06.10.2009, 05:35     srand(time(0)) #8
Цитата Сообщение от Syltan
Уточнить можно?
количество секунд, прошедших с 00:00:00 1970 года, их можно преобразовывать в разные части времени с помощью остальных функций из time.h

если передать 1, 5 или 10, она будет пробовать по адресу 1, 5 или 10 записать количество секунд, и, так как эти адреса не дадут ничего записать, программа вывалится

Добавлено через 1 минуту
Цитата Сообщение от Syltan
time зависит как-то от сранда
нет
TarasGolovatyj
0 / 0 / 0
Регистрация: 11.05.2014
Сообщений: 6
12.06.2014, 23:56     srand(time(0)) #9
от було написано що srand -генератор випадкових значень

а скажіть будьласка чим від відрізняється від rand()%n-m
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.06.2014, 20:58     srand(time(0))
Еще ссылки по теме:

C++ Как сделать подбор рандомный разных чисел (srand (time(0) не помогает)?
Std::sort, lambda-выражения, time(NULL) и srand() C++
Srand C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
worldown
31 / 31 / 15
Регистрация: 22.06.2009
Сообщений: 119
21.06.2014, 20:58     srand(time(0)) #10
rand()%n-m (где %- ариф. операция остаток от деления) означает что случайное число будет меньше n.
пример. Пусть
int n = 100;
int m = 10;
rand() с генерировал 9865, 9865%100 = 65 далее 65 - 10 = 55;
Yandex
Объявления
21.06.2014, 20:58     srand(time(0))
Ответ Создать тему
Опции темы

Текущее время: 21:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru