카테고리 없음

[C언어] rand(), srand()

s뽈록이s 2013. 7. 18. 09:40
void main()
{
	int dice;

	srand((int)time(NULL));	
	dice = (rand() % 6) + 1;

	printf("주사위 : %d\n", dice);
}

프로그램 실행화면


주사위나 가위 바위 보 게임등 난수를 만들어 주는 rand()함수를 자주 사용한다. 사용해본 사람은 알겠지만 패턴이 일정하다.


프로그램 시작 후 주사위를 예로 들면 2, 5, 2, 1, 3, 5, 6이라는 패턴으로 나왔다면 프로그램을 종류 한 후 다시 실행해 보면 또 2, 5, 2, 1, ~~ 똑같이 반복되는 것을 볼 수 있다.


난수를 발생하는 seed라는 녀석이 똑같기 때문이다. 그래서 이 seed로 현재시간을 넣어주면 프로그램을 실행할 때마다 똑같은 패턴으로 난수가 발생하는 것을 막을 수 있다.


예전 슈퍼나 문방구 앞에 많았던 메달게임이 있다. 이 메달 게임이 계속 똑같은 패턴으로 나왔다면 아마 그 문방구나 슈퍼는 망했을 것이다.


교묘하게 항상 남는 장사가 되도록 프로그래밍 되어있다는 것을 알고는 있지만 도박이라는게 재미가 너무 있는지라 지금도 하고 싶다. 아무튼 srand()를 통해 진정한 난수를 얻도록 하자.