1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#include <stdio.h>
#include <stdlib.h> //rand()
#include <time.h> //time()
#define G 10 //grade배열 요소의 개수
#define N 200 //num 배열 요소의 개수
int main() {
int i, j;
int grade[G] = { 0 }; //배열 요소를 0으로 초기화함.
int num[N]; //난수를 저장할 배열 생성.
srand(time(NULL)); //프로그램을 실행할 때마다 다른 난수 생성.
for (i = 0; i < N; i++) {
num[i] = rand() % 100; //0~99까지 난수 200개가 저장됨.
}
for (i = 0; i < N; i++) {
grade[num[i] / 10]++; //num[i]값에 29가 저장되있으면 10으로 나눔.
//그럼 2가 되고 10단위 중 2단위인 grade[2] 값이 하나 증가함.
}
printf(" ==== 등급별 분포도 그래프 ==== \n\n");
for (i = 0; i < G; i++) {
printf(" %2d ~ %2d : ", i * 10, (i * 10) + 9); //10단위 범위 출력
for (j = 0; j < grade[i]; j++) {
printf("*"); //각 단위 별로 저장된 num 개수만큼 별찍기
}
printf(" %d", grade[i]); // num 개수 출력
printf("\n");
}
return 0;
}
|
cs |
rand : 예측할 수 없는 하나의 난수를 생성. ( 난수의 범위는 0~RAND_MAX )
RAND_MAX는 0x7fff이므로 , 결국 난수의 범위는 0~32767 이다.
1
2
3
4
5
|
int rand( void ); //함수원형
rand() % N; // 0 ~ N-1 범위의 난수를 생성. (N이 3일때 0~2 사이의 난수가 생성됨.)
rand() % N + m; // 0+m ~ (N-1)+m 범위의 난수를 생성. (N이 3, m이 4일때 4~6 사이의 난수가 생성됨.)
rand() % N * m; // 0 ~ N-1 범위의 난수에 m을 곱한 난수를 생성. (N이 4, m이 2일때 0,2,4,6이 난수로 생성됨.)
|
cs |
srand : rand 함수만으로 생성되는 난수는 일정한데 srand를 이용, 시간 값을 매개로 초기화하면 일정하지 않고 불규칙적인 난수가 생성된다.
1
2
3
|
void srand( unsigned int seed ); //함수원형
srand(time(NULL));
|
cs |
'PRACTICE > Basic' 카테고리의 다른 글
[Arduino] 간단한 프린트문, 8개의 LED를 비트단위로 ON/OFF 하기 (0) | 2020.08.18 |
---|---|
[C] 포인터와 함수를 이용해서 배열 전체값, 평균값, 최대값 출력하기 (0) | 2020.07.16 |
[C] 배열을 포인터로 받는 함수 만들기 - 합계, 곱하기, 출력 (0) | 2020.07.16 |
[C] 문자데이터를 입력받고 대문자는 소문자로, 소문자는 대문자로 변환하는 프로그램 (0) | 2020.07.16 |
[C] 이중 for문, if문을 활용한 별찍기 (0) | 2020.07.16 |
댓글