[c++] while, for 반복문 안에 srand, rand에 대해서

    srand와 rand는 랜덤값을 반환하기 위한 함수로, C++에서는 C언어의 라이브러리인 <cstdlib>를 가져와 사용한다.

    일반적으로 rand함수를 사용하게 될 경우, 매 실행 결과에서의 rand값이 동일하게 나온다.

    C를 공부한 사람이라면 이것이 seed가 동일하기 때문에 발생하는 문제라는 것을 알 것이다. (seed==1)

    매 실행마다 랜덤값을 얻기위해, 우리는 srand 함수를 사용해 매 초마다 seed를 변경해준다.

    이와 같은 방법은 매 실행 시 seed값을 변경해주므로, 난수생성이 어려운 초보자들에게 매우 효과적이다.

    다만, 사용시 주의해야할 점이 있는데, srand와 rand 함수를 같이 while이나 for문같은 반복문에서 실행하면 안 된다.

    그렇게되면 매 실행 시, 나오는 랜덤값이 동일함은 물론이고, 한번의 실행안에 반복문에서 도출되는 값도 동일해진다.

     

    (아무래도 srand가 매'초'마다 seed를 바꿔주는데, 우리의 컴퓨터는 계산속도가 엄청빨라서 같은 값이 나오는 걸 수도 ?)

    댓글