(Backend) 백엔드/C언어 문법
C언어 - 랜덤함수/ c언어 난수 생성/c언어 랜덤함수/c언어 rand() 예제/간단 요약
공부가싫다가도좋아
2021. 4. 22. 08:49
반응형
C언어 랜덤 함수
간단 설명:
rand() % (어떤 수)
-> (어떤 수) 만큼 랜덤으로 숫자를 뽑음.
srand(time(NULL))
-> 난수 초기화. 난수 초기화를 안 할 경우 컴파일할 때마다 결괏값이 같게 나옴.
예제 1) 간단 예제
#include <stdio.h>
#include <stdlib.h> //rand, srand가 포함된 헤더파일
#include <time.h> // time이 포함된 헤더파일
int main(){
int i;
srand(time(NULL)); // 난수 초기화, 안할 경우 결과값이 계속 같게 나옴.
for(i=0; i<10 ; i++){
int num = rand() % 5;
printf("%3d",num); //0~4까지의 숫자가 10번 무작위로 나옴.
}
return 0;
}
예제 2) 배열과 랜덤 함수를 사용한 3 자릿수 로또번호 만들기.
#include <stdio.h>
#include <stdlib.h> //rand, srand가 포함된 헤더파일
#include <time.h> // time이 포함된 헤더파일
#define NUM 3
int main(){
int i;
int a[NUM];
int b[NUM]={2,1,3};
for(;;){
int menu;
srand(time(NULL)); // 난수 초기화, 안할 경우 결과값이 계속 같게 나옴.
printf("\n로또번호를 뽑으려면 1번을 입력하시오.(나가기는 아무숫자.)\n");
printf("선택>>>>>>>");
scanf("%d",&menu);
printf("\n");
if(menu==1){
int tmp=0;
for(i=0; i<NUM ; i++){
a[i] = rand() % NUM+1;
//+1을 했으므로 1~5까지의 숫자가 10번 무작위로 나옴.
printf("%3d",a[i]);
}// for(i=0; i<NUM ; i++)
for(i=0;i<NUM;i++){
if(a[i]==b[i]){
tmp++;
}
}// for(i=0;i<NUM;i++)
if(tmp==NUM){
printf("\n당첨되었습니다!!\n");
}else{
printf("\n꽝!\n");
}
}//if(menu==1){
else{
break;
}
}
return 0;
}
반응형