난수: 특정한 규칙을 가지지 않는 수 즉, 무작위 숫자
랜덤한 숫자를 나타나게 하는 것
rand를 사용하기 위해서 <stdlib.h> 헤더파일 포함
rand()함수는 0~32767의 수 중 무작위로 하나의 수를 반환
10개의 난수 출력
랜덤 난수를 생성하는 것을 두 번 돌리려 한다.
실제로 컴퓨터는 정해진 입력에 따라 출력을 하기 때문에 사람처럼 우연한 어떤 값을 생성할 수 없다.
컴퓨터가 랜덤한 값을 출력하려면 여러 계산 과정을 거친 수 값을 출력하여 사용자에게 랜덤한 값인 것 처럼 보이게 해야한다.
출력할때 마다 다른 수 가 나오게 하려면 srand()함수 사용
seed는 뽑기통이라고 생각하면 된다.
프로그램을 작성할 때 시드를 계속 변화시킬 수 있다면, 출력 값을 매번 다르게 할 수 있다는 것이다.
시드를 랜덤한 변수로 설정하는 방법은 여러가지가 있지만 가장 많이 사용하는 방법은 현재의 시간을 시드로 사용하는 방법은 time()함수를 사용하고 싶다면 <time.h>헤더파일 추가해야 한다.
NULL을 전달하는 것은 매개변수(함수에 전달된 값을 받는 특별한 변수)로 어떤 값을 전달하지 않겠다는 의미
즉, time(NULL)함수는 특정 시점에서 시간 정보를 얻기 위해 시스템의 현재 시간을 사용한다는 것이다.
만약 time(NULL)의 경고가 뜬다면 time(NULL)앞에 (unsigned int)를 추가해주면 된다.
(unsigned int)는 부호 없는 정수로, 0과 양의 정수만 표현하는 정수
문제1
동전의 앞/뒤 구분하는 프로그램을 작성하시오
예제 출력1
앞면 또는 뒷면(0 또는 1): 0
맞았습니다.
예제 출력2
앞면 또는 뒷면(0 또는 1): 1
틀렸습니다.
int b_rand(void)는 사용자 정의 함수로 맨 마지막 쪽 rand()함수를 호출하여 0 or 1의 난수를 반환하는 역할을 한다.
b_라는 것은 함수의 이름이기 때문에 다른 이름으로 변경해도 되는 부분이다.
b_rand()함수를 따로 선언하고 나중에 호출하는 이유는 코드의 모듈화와 가독성을 높이기 위해서이다.
b_rand()함수를 선언하고 나중에 호출하는 것으로 함수의 동작과 역할을 명확히 분리할 수 있다.
이렇게 하면 코드를 이해하고 수정하기 더 쉬워진다.
1) b_rand(void); 선언 부분
2) main(void);부분
3) b_rand(void); 호출 부분으로 나누어 본다.
그럼 1)이 먼저 실행되고 2)로 넘어와서 2)의 while문 안의 if문의 b_rand()에서 3)의 부분이 호출되어 if문이 확인된 후
2로 나누어서 나머지가 0이면 '맞았습니다.'
2로 나누어서 나머지가 1이면 '틀렸습니다.'를 출력한다.
문제2
컴퓨터와 가위, 바위, 보 게임을 하는 프로그램을 작성하시오.
컴퓨터는 사용자에게 알리지 않고 가위, 바위, 보 중에서 임의로 하나를 선택한다.
사용자는 프로그램의 입력 안내 메시지에 따라 3개 중 하나를 선택하게 된다.
사용자의 선택이 끝나면 컴퓨터는 누가 무엇을 선택하였고 누가 이겼는지, 비겼는지를 알려준다.
출력1
선택하시오.(1가위 2바위 3보): 2
사용자 승
'C언어' 카테고리의 다른 글
C언어 <반복문> 13~19 문제 풀이 (0) | 2023.07.21 |
---|---|
C언어 난수를 활용한 게임 (0) | 2023.07.21 |
C언어 <반복문> 9~12 문제풀이 (0) | 2023.07.18 |
C언어 <반복문> 1~8 문제풀이 (0) | 2023.07.17 |
C언어 <조건문 문제> 6~9 문제풀이 (0) | 2023.07.17 |