rand() 함수는 난수를 발생하는데 srand(시드값)에 의한 시드값 설정이 없다면
rand() 자체에서 고정된 시드값으로 난수를 발생하게 된다, 즉 시드값 을 따로 설정하지 않으면
동일한 시드값으로 rand() 가 계산되어지기 때문에 프로그램이 끝나고 다시 실행하면 동일한 난수들이 나열된다
내부적으로 고정된 씨드값 =c
rand(); -> // srand(c); c 라는 상수로 srand 함수가 난수 테이블을 설정하면 rand()함수의 한번 콜이 일어날때
// 난수테이블의 첫번째 숫자부터 리턴 되는 형식, (난수 테이블이 난수 함수일 수 있다.)
즉 srand( 시드값 ) 난수테이블을 변경할 수 있는 상수 시드값이 아닌 변경되는 값을 시드값으로 준다면
rand() 는 변경되는 테이블값의 다른 첫 난수 값을 가져올 수 있을 것이다
변경되는 시드값은 time(NULL) 로 쓸 수도 있으나 이것은 1초 사이클로 +1 씩증가하는 함수이기 때문에
1초 사이에는 동일한 난수가 발생할 것이다
계속 적인 변화를 원한다면 GetTickCount() 같은 함수를 쓰면 되겠다.
반응형
'프로그래밍(Programming) > c++, 11, 14 , 17, 20' 카테고리의 다른 글
void 형변환에 관하여 %p (0) | 2012.10.31 |
---|---|
상속, 포함관계 의 생성자 소멸자 호출 관계. (0) | 2012.10.31 |
char 을 BSTR 로 변환 (0) | 2012.10.31 |
PathFileExists(파일경로가 붙은 파일 이름) 파일이 존재하는지 여부 (0) | 2012.10.31 |
확장열 (0) | 2012.10.31 |