본문 바로가기
I LEARNED/TIL

[TIL] C++ 난수 생성

by veganwithbacon 2023. 5. 15.
반응형

미니게임처럼 난수 생성을 통해 코드를 짜는게 있었는데, 오랜만에 쓰다보니 다 잊어버려서 다시 공부한김에 좀 끄적여봤다. 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);
}
반응형

댓글