본문 바로가기
C언어/C언어 문법

C언어 - 랜덤함수/ c언어 난수 생성/c언어 랜덤함수/c언어 rand() 예제/간단 요약

by 공부가싫다가도좋아 2021. 4. 22.
반응형

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;
	
} 

반응형

댓글