Spec-Zone.ru › C++

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

См. также

rand
генерирует псевдослучайное число
(функция)
RAND_MAX
максимальное возможное значение, генерируемое std::rand
(макроконстанта)
reseed
повторно инициализирует генератор случайных чисел для текущего потока
(функция)
Документация C для srand

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/numeric/random/srand

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API