Как много времени тратит функция srand(time(NULL))?

165
02 февраля 2019, 02:10

Сильно ли использование srand(time(NULL)) замедляет код, если эта функция выполняется в цикле наряду с остальным кодом? (примерно 10000 итераций в секунду, комп обычный)
Функция rand() будет использоваться ~500 000 000 раз

Answer 1

Главное - если в цикле, который выполняется 1000 итераций в секунду, выполнять srand, вы будете получать по 1000 одинаковых "случайных" чисел.

rand() вычисляет очередное случайное число на основании предыдущего значения, ну, а srand это предыдущее значение устанавливает. Поскольку обычно time(NULL) возвращает значение времени в секундах, получается, что в пределах одной секунды все ваши rand() будут одинаковы. Да и в разные секунды получаемые числа могут быть не случайны - все же они получаются из последовательных значений.

srand(time(NULL)) должен вызываться один-единственный раз.

Answer 2

Чтобы оптимизировать код, эту функцию стоит вызвать 1 раз перед циклом, все равно при каждом запуске программы рандомизация будет разной. Кстати желательно использовать вместо NULL nullptr . Ну и соответсвтенно оптимизация будет равна = (кол-во итераций)*(кол-во тиков для выполнения функции). Сколько тиков стоит эта функция я не знаю, однако т.к. она в цикле постоянно вызывается, должна стоить в сумме дорого.

READ ALSO
Необработанное исключение по адресу 0x00007FF89D0BB985 (ucrtbased.dll)

Необработанное исключение по адресу 0x00007FF89D0BB985 (ucrtbased.dll)

не могу понять , в чём ошибка , пытаюсь просто для начала вывести id из БД oracle

171
Curl возвращает CURLE_LOGIN_DENIED при попытке обращения к mail.ru по IMAP

Curl возвращает CURLE_LOGIN_DENIED при попытке обращения к mail.ru по IMAP

При попытке подключения к imap mailru выплевывает ошибку CURLE_LOGIN_DENIED, пробовал различные комбинации логина (с хостом и без) тот же результат, есть...

220