Namespaces
Variants

srand

From cppreference.net
Определено в заголовочном файле <stdlib.h>
void srand ( unsigned seed ) ;

Заполняет генератор псевдослучайных чисел, используемый функцией rand() , значением seed .

Если rand() используется до любых вызовов srand() , rand() ведет себя так, как если бы она была инициализирована с помощью srand ( 1 ) .

Каждый раз, когда rand() инициализируется тем же seed , он должен генерировать одинаковую последовательность значений.

srand() не гарантирует потокобезопасность.

Содержание

Параметры

seed - значение начального числа

Возвращаемое значение

(нет)

Примечания

В общем случае, генератор псевдослучайных чисел должен инициализироваться только один раз, перед любыми вызовами rand() , и в начале программы. Не следует выполнять повторную инициализацию или переинициализацию каждый раз, когда требуется сгенерировать новую партию псевдослучайных чисел.

Стандартной практикой является использование результата вызова time ( 0 ) в качестве сида. Однако, time() возвращает значение типа time_t , а time_t не гарантированно является целочисленным типом. На практике, однако, все основные реализации определяют time_t как целочисленный тип, и этого же требует POSIX.

Пример

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
    srand(time(NULL)); //использовать текущее время как сид для генератора случайных чисел
    int random_variable = rand();
    printf("Random value on [0,%d]: %d\n", RAND_MAX, random_variable);
}

Возможный вывод:

Random value on [0 2147483647]: 1373858591

Ссылки

  • Стандарт C17 (ISO/IEC 9899:2018):
  • 7.22.2.2 Функция srand (стр: 252-253)
  • Стандарт C11 (ISO/IEC 9899:2011):
  • 7.22.2.2 Функция srand (стр: 346-347)
  • Стандарт C99 (ISO/IEC 9899:1999):
  • 7.20.2.2 Функция srand (стр: 312-313)
  • Стандарт C89/C90 (ISO/IEC 9899:1990):
  • 4.10.2.2 Функция srand

Смотрите также

генерирует псевдослучайное число
(функция)
максимальное возможное значение, генерируемое rand ( )
(макроконстанта)