반응형

 rand() 함수는 난수를 발생하는데 srand(시드값)에 의한 시드값 설정이 없다면

rand() 자체에서 고정된 시드값으로 난수를 발생하게 된다, 즉 시드값 을 따로 설정하지 않으면

동일한 시드값으로 rand() 가 계산되어지기 때문에 프로그램이 끝나고 다시 실행하면 동일한 난수들이 나열된다

내부적으로 고정된 씨드값 =c

rand(); -> // srand(c); c 라는 상수로 srand 함수가 난수 테이블을 설정하면 rand()함수의 한번 콜이 일어날때

// 난수테이블의 첫번째 숫자부터 리턴 되는 형식, (난수 테이블이 난수 함수일 수 있다.)

즉 srand( 시드값 ) 난수테이블을 변경할 수 있는 상수 시드값이 아닌 변경되는 값을 시드값으로 준다면

rand() 는 변경되는 테이블값의 다른 첫 난수 값을 가져올 수 있을 것이다

변경되는 시드값은 time(NULL) 로 쓸 수도 있으나 이것은 1초 사이클로 +1 씩증가하는 함수이기 때문에

1초 사이에는 동일한 난수가 발생할 것이다

계속 적인 변화를 원한다면 GetTickCount() 같은 함수를 쓰면 되겠다.

반응형

+ Recent posts