프로그래밍(Programming)/c++, 11, 14 , 17, 20
랜덤함수와 씨드값
3DMP
2012. 10. 31. 17:35
rand() 함수는 난수를 발생하는데 srand(시드값)에 의한 시드값 설정이 없다면
rand() 자체에서 고정된 시드값으로 난수를 발생하게 된다, 즉 시드값 을 따로 설정하지 않으면
동일한 시드값으로 rand() 가 계산되어지기 때문에 프로그램이 끝나고 다시 실행하면 동일한 난수들이 나열된다
내부적으로 고정된 씨드값 =c
rand(); -> // srand(c); c 라는 상수로 srand 함수가 난수 테이블을 설정하면 rand()함수의 한번 콜이 일어날때
// 난수테이블의 첫번째 숫자부터 리턴 되는 형식, (난수 테이블이 난수 함수일 수 있다.)
즉 srand( 시드값 ) 난수테이블을 변경할 수 있는 상수 시드값이 아닌 변경되는 값을 시드값으로 준다면
rand() 는 변경되는 테이블값의 다른 첫 난수 값을 가져올 수 있을 것이다
변경되는 시드값은 time(NULL) 로 쓸 수도 있으나 이것은 1초 사이클로 +1 씩증가하는 함수이기 때문에
1초 사이에는 동일한 난수가 발생할 것이다
계속 적인 변화를 원한다면 GetTickCount() 같은 함수를 쓰면 되겠다.
반응형