반응형
미니게임처럼 난수 생성을 통해 코드를 짜는게 있었는데, 오랜만에 쓰다보니 다 잊어버려서 다시 공부한김에 좀 끄적여봤다. C/C++에서 난수했을 때 제일 많이 접하는 함수가 rand()와 srand()함수이다.
rand()함수는 난수의 생성 패턴이 1개, srand()는 여러 개로 설정하는 것이다.
✅ 랜덤 함수를 통한 난수 생성
//C언어
#include<stdlib.h> //rand(), srand()
#include<time.h> //time()
//C++
#include<cstdlib> // rand(), srand()
#include<ctime> // time()
C언어에서 사용하는 랜덤 함수(rand)를 사용하려면 <stdlib.h> 헤더 파일을, C++에서 사용하는 랜덤 함수인(srand)을 사용하려면 <cstdlib>를 헤더에 포함시켜야한다. 또 이 난수 함수를 랜덤하게 사용하려면 초기값으로 현 시간을 넣어줘야 하기에 현재 시간을 출력할 수 있는 헤더 파일도 포함되어야 한다.
✅ 현재 시간을 seed값으로 부여해 무작위 난수 출력
//C언어
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//C++
#include <iostream>
#include <cstdlib>
#include <ctime>
void main()
{
srand((unsigned int)time(NULL)); //seed값으로 현재시간 부여
printf("난수 : %d\n", rand());
printf("난수 : %d\n", rand());
printf("난수 : %d\n", rand());
printf("난수 : %d\n", rand());
printf("난수 : %d\n", rand());
}
✅% 나머지 연산자를 사용하여 난수의 범위 한정시키기
//C언어
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//C++
#include <iostream>
#include <cstdlib>
#include <ctime>
void main()
{
srand((unsigned int)time(NULL)); //seed값으로 현재시간 부여
// 난수 %10 = 난수의 범위 0~9까지 한정
printf("난수 : %d\n", rand() % 10);
printf("난수 : %d\n", rand() % 10);
printf("난수 : %d\n", rand() % 10);
printf("난수 : %d\n", rand() % 10);
printf("난수 : %d\n", rand() % 10);
}
반응형
'I LEARNED > TIL' 카테고리의 다른 글
[TIL] C++에서 String말고 #include<cstring>은 왜 쓸까? (3) | 2023.05.16 |
---|---|
[TIL] .O파일이 뭘까? (10) | 2023.05.16 |
[TIL] 소멸자 왜 쓸까? (1) | 2023.04.21 |
[TIL] VirtualBox(Ubuntu) 윈도우 공유폴더 마운트 (1) | 2023.04.19 |
[TIL] makefile 단순하게 만들기 (0) | 2023.04.17 |
댓글