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() (макроконстанта) |
|
Документация C++ для srand |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/numeric/random/srand