std::srand
Определён в заголовочном файле <cstdlib> | ||
|---|---|---|
void srand( unsigned seed ); |
Инициализирует генератор псевдослучайных чисел, используемый 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)); // use current time as seed for random generator
std::cout << "Random value on [0, " << RAND_MAX << "]: " << std::rand() << '\n';
}
Возможный вывод:
Random value on [0, 2147483647]: 1373858591
См. также
| генерирует псевдослучайное число (функция) |
|
максимальное возможное значение, генерируемое std::rand (макроконстанта) |
|
| повторно инициализирует генератор случайных чисел для текущего потока (функция) |
|
Документация C для srand |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/numeric/random/srand