C언어 난수 개수 - Ceon-eo nansu gaesu

#include<stdio.h> #include <stdlib.h> #include <time.h>  void main() { srand(time(NULL)); int x[10], i, a=0, b=0, c=0, d=0, e=0; for (i = 0; i < 10; i++) { x[i] = rand() % 5; if (x[i] == 0) a++; else if (x[i] == 1) b++; else if (x[i] == 2) c++; else if (x[i] == 3) d++; else if (x[i] == 4) e++; printf("%d\n", x[i]); } printf("0의 개수 :%d\n",a); printf("1의 개수 :%d\n",b); printf("2의 개수 :%d\n",c); printf("3의 개수 :%d\n",d); printf("4의 개수 :%d\n",e); }

실행결과

PRACTICE/Basic

2020. 7. 16.

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 이다.

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를 이용, 시간 값을 매개로 초기화하면 일정하지 않고 불규칙적인 난수가 생성된다.

void srand( unsigned int seed ); //함수원형

srand(time(NULL));

cs

관련글

Toplist

최신 우편물

태그