Spec-Zone.ru › C

srand

Определено в заголовочном файле <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)); //use current time as seed for random generator
    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
генерирует псевдослучайное число
(функция)
RAND_MAX
максимальное возможное значение, сгенерированное rand()
(макроконстанта)
Документация C++ для srand

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

Spec-Zone.ru

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