책 내용 질문하기
p.97 예제 2번 난수 이용한 반복 프로그램 관련 문의
도서
2019 시나공 정보처리기사 실기(산업기사포함)
페이지
97
조회수
226
작성일
2019-05-17
작성자
탈퇴*원
첨부파일

예제2)

난수를 이용해 계산된 n의 값이 1일 때까지 반복하는 프로그램이다.

실행 결과를 확인하시오.

 

main() {

int n=0;

srand(time(NULL));

while (n!=1)

{

n=rand()%6+1;

printf("%d\n",n);

}

 

실행결과가 언젠가는 1이 나오긴 하겠지만

rand() 실행 결과가 말그대로 랜덤으로 나올 것 같은데

 

3

3

2

1

 

이라고 답이 나와있었습니다.

 

반드시 이 답이 나올 수가 있는 건가요?

아니면 그냥 예제로 이런식으로 된다는 걸 답변해두신 건지...궁금합니다.

 

 

 

 

[ 추가 문의사항 ]

다른 분이 문의하신 질문 중에 "예제 2번에서 rand() 함수를 왜 6으로 나누는건지 모르겠습니다." 라는 내용을 봤는데,
답변이 아래와 같았습니다.

"rand() 함수는 0부터 32767 사이의 난수를 발생시킵니다.

주사위를 굴리다고 하면 1~6까지의 수를 발생시켜야 하는데 위의 수에서 특정 개수의 수를 뽑아내는데 주로 사용하는 방법이 나머지를 사용하는 방법입니다.

(난수)%6을 하면 0~5의 나머지가 나오게 됩니다. 이 나머지에 +1을 하게 되면 주사위와 같이 1~6의 랜덤수가 나오게 되죠."

 

 

그런데 여기서 질문은...
예제의 문제는 난수를 이용해 계산된 n의 값이 1일때까지 반복하는 프로그램이라고 했는데

갑자기 주사위를 굴리는 예제가 왜 나온 건지 궁금합니다.

 

 

 

답변
2019-05-21 14:39:56

안녕하세요 길벗수험서 운영팀입니다.

 

예, 예제가 맞습니다.

 

하단의 n = rand()%6 + 1; 의 해설을 보시면, '발생되는 값은 실행할 때마다 달라진다.'라고 언급하고 있습니다.

아래 디버깅표의 예제는 단순히 실행될 경우 이러한 값이 나올 수 있다라고 표시한 것입니다.

 

 

주사위 굴리는 예제는 해당 예제를 주사위 문제로 착각하고 답변드린 것 같습니다.

srand, rand 함수가 사용된 문제는 지금까지 주사위 관련 문제로만 출제되었었습니다.

(18년도 10월 문제)

 

행복한 하루되세요 :)

  • 관리자
    2019-05-21 14:39:56

    안녕하세요 길벗수험서 운영팀입니다.

     

    예, 예제가 맞습니다.

     

    하단의 n = rand()%6 + 1; 의 해설을 보시면, '발생되는 값은 실행할 때마다 달라진다.'라고 언급하고 있습니다.

    아래 디버깅표의 예제는 단순히 실행될 경우 이러한 값이 나올 수 있다라고 표시한 것입니다.

     

     

    주사위 굴리는 예제는 해당 예제를 주사위 문제로 착각하고 답변드린 것 같습니다.

    srand, rand 함수가 사용된 문제는 지금까지 주사위 관련 문제로만 출제되었었습니다.

    (18년도 10월 문제)

     

    행복한 하루되세요 :)

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.