#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 |