std::srand
Defined in header <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/w/cpp/numeric/random/srand