4월 192007
거꾸로 생각해보세요
컴퓨터가 낸 정답을 맞추는 프로그램이라면
일단 random함수로 컴퓨터가 일정한 수를 생성한 후
사용자가 답을 입력하면 그수와 비교하여 크다, 작다, 같다
3가지 상태를 출력시키죠. 만일 10을 입력했느데 작다라고 나왔으면
사용자가 더 큰 수를 입력하게 되고 더 큰 수를 입력(13)했는데 그
것보다 작다라고 나오면 사용자는 답이 11, 12중에 하나인 것을 알 수
있죠
거꾸로 해봅시다. 사용자가 일정한 수를 생각을 하고 있어요
만일 답의 범위가 1 ~ 100까지의 정수라고 하면
컴퓨터는 1 ~ 100까지의 랜덤한 수 하나를 만들어 사용자에게
물어보겠지요?
아 그리고 어떤 언어를 쓰느냐 따라서 랜덤함수가 달라지므로
랜덤하게 만드는 함수를 random()이라고 하죠
1~100사이에 랜덤수를 만들려면
random()%100하면 1 ~ 100까지의 정수가 나오겠죠?
그래서 나온 수(만일 50이라 합시다)를 사용자가 작다고 하면
random()%50합니다. 크면은 random()%50 + (100 – 50)하면 되겠죠?
이렇게 계속 루프를 돌리면 아마 어느 순간에는 컴퓨터도 답을
찾을 겁니다. 그러기 위해선 random()함수를 %하는 operand를 상수로
사용하면 안되고 변수로 선언해야겠지요.
물론 그변수와 사용자가 입력하는
값을 동일시 사용하면 되겠고요
즉 중요한 랜덤값 생성하는 코드
x = random()%y, x = random()%y + (100 – y)를 if문을 이용하여
잘 제어하면 숙제 끝나겠네요.
잘 생각해보세요