인프런 커뮤니티 질문&답변
srand() 질문
작성
·
211
0
제가 가위바위보 게임을 만드는 과정에서 srand()를 while(true) 안에다가 넣었을때, AI의 값이 약간 이상하다는 것을 느꼇습니다.
이제 랜덤으로 생성이 되긴하는거같은데 랜덤이아니고 계속 값이 1이 반복됬다가 2가 반복됬다가.. 하는 현상을 파악했습니다.
그래서 srand()만 밖으로 빼주니까 정상작동 하더군요 이 현상이 왜그런지 궁금합니다.
답변 2
0
0
Rookiss
지식공유자
srand는 랜덤을 돌리는게 아니라 랜덤의 시드값을 설정하는 부분입니다.
쉽게 비유하면 컴퓨터에서 진짜 랜덤이란 존재할 수가 없습니다.
컴퓨터도 전자회로로 만들어져 있는 것인데,
'랜덤'이라는 전자회로는 존재하지 않습니다.
그래서 사실상 초기 랜덤 시드값을 하나를 두고,
그것을 기반으로 특정 공식에 의해 다음 값을 추출하는 방식으로 동작합니다.
예를 들어 첫번째 값을 기준으로 8씩을 곱하는게 우리의 단순 랜덤(?) 공식이라면,
첫번째 시드값이 1이라면 1, 8, 16, 24... 뭐 이런식으로 나오겠죠.
물론 실제 랜덤 함수가 이렇게 단순하진 않지만
같은 시드값을 넣어주면 같은 값이 나온다는 사실은 변함이 없습니다.
따라서 while (true) 안에다 srand 시드 초기화를 넣게 되면,
[동일 시드 = 동일 랜덤 값]에 따라
동일한 패턴이 계속 연속해서 일어나는 것입니다.




