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 함수 (p: 252-253)
  • C11 표준 (ISO/IEC 9899:2011):
  • 7.22.2.2 srand 함수 (p: 346-347)
  • C99 표준 (ISO/IEC 9899:1999):
  • 7.20.2.2 srand 함수 (p: 312-313)
  • C89/C90 표준 (ISO/IEC 9899:1990):
  • 4.10.2.2 srand 함수

참고 항목

의사 난수를 생성함
(함수)
rand ( ) 함수가 생성할 수 있는 최대값
(매크로 상수)