std::srand — cppreference.com
Материал из cppreference.com
<tbody> </tbody>
| Определено в заголовочном файле |
||
|
|
||
Инициализирует генератор псевдослучайных чисел, используемый std::rand(), значением seed.
Если std::rand() используется до любых вызовов srand(), std::rand() ведёт себя так, как если бы она была инициализирована srand(1).
Каждый раз, когда std::rand() инициализируется одним и тем же seed, она должна создавать одну и ту же последовательность значений.
srand() не гарантирует потокобезопасность.
Параметры
| seed | — | начальное значение |
Возвращаемое значение
(нет)
Примечание
Вообще говоря, генератор псевдослучайных чисел должен инициализироваться только один раз, перед любыми вызовами rand(), в начале программы. Его не следует повторно инициализировать или переинициализировать каждый раз, когда вы хотите сгенерировать новый пакет псевдослучайных чисел.
Стандартная практика заключается в использовании результата вызова std::time(0) в качестве начального значения. Однако std::time возвращает значение std::time_t, а std::time_t не обязательно является целочисленным типом. На практике, однако, каждая крупная реализация определяет std::time_t как целочисленный тип, и это также требуется POSIX.
Пример
#include <cstdlib> #include <ctime> #include <iostream> int main() { std::srand(std::time(0)); // использовать текущее время в качестве начального // значения для генератора случайных чисел std::cout << "Случайное значение в диапазоне [0, " << RAND_MAX << "]: " << std::rand(); }
Возможный вывод:
Случайное значение в диапазоне [0, 2147483647]: 1373858591