수안보중학교 로고이미지

RSS 페이스북 공유하기 트위터 공유하기 카카오톡 공유하기 카카오스토리 공유하기 네이버밴드 공유하기 프린트하기
8. 1~45 사이의 난수 6개를 발생시켜 최댓값과 최솟값을 구하는 프로그램을 작성하시오.
작성자 수안보중학교 등록일 19.09.23 조회수 31

8. 145 사이의 난수 6개를 발생시켜 최댓값과 최솟값을 구하는 프로그램을 작성하시오.
(로또복권 추첨)
 
<프로그램 소스>
#include <stdio.h> // printf()
#include <stdlib.h> // rand()
#include <time.h> // time()
int main()
{
int i,nsu;
int chde=-9999; // 충분히 작은 값으로 초기화
int chso= 9999; // 충분히 큰 값으로 초기화
srand( time(NULL) );
for (i=0 ; i < 6 ; i++) // i++ : i 값을 1 증가
{
// nsu = rand() % 100; // 0 ~ 99 사이의 난수
nsu = rand() % 45+1; // 1 ~ 45 사이의 난수, 로또복권 추첨
printf("%d ", nsu);
if (nsu > chde) chde = nsu;
if (nsu < chso) chso = nsu;
}
printf("\n\n최댓값 : %d\n", chde);
printf( "최솟값 : %d\n", chso);
}
 
 
<출력 결과>

43 5 12 34 17 2
최댓값 : 43
최솟값 : 2

 
[ rand의 난수 생성범위에 따른 함수 사용 방법 ]

난수 생성범위
프로그램 연산식
설 명
1 <= 정수난수 <= 45
rand() % 45+1;
45로 나눈 나머지 값의 범위는 0~44,
이 값에 1을 더하므로 1~45 사이의 난수 생성
0 <= 정수난수 <= 99
rand() % 100;
100으로 나눈 나머지 값의 범위는 0~99이므로
0~99 사이의 난수 생성.
10 <= 정수난수 <= 30
rand() % 21 + 10;
21로 나눈 나머지 값의 범위는 0~20,
이 값에 10을 더해주면 10~30 사이의 난수 생성.
-5 <= 정수난수 <= 5
rand() % 11 - 5;
11로 나눈 나머지 값의 범위는 0~10,
이 값에 5를 감해주면 -5~+5 사이의 난수 생성.
0 <= 실수난수 <= 1
rand()/(double)RAND_MAX
0~RAND_MAX의 사이 난수를 다시(double)RAND_MAX로 형변환된 실수로 나눔으로써 0~1 사이의 실수 난수를 생성.

 


이전글 9. 1000을 2로 몇 번 나누면 1보다 작아지는가를 구하는 프로그램을 작성하시오.
다음글 7. 아래 출력결과 같이 공백 문자를 입력받아 화면에 출력시키는 프로그램을 작성하시오.