close
Пространства имён
Варианты
Действия

srand

Материал из cppreference.com
<tbody> </tbody>
Определено в заголовочном файле <stdlib.h>
void srand( unsigned seed );

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

Если 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()
(макроконстанта) [править]