Notice
Recent Posts
Recent Comments
Link
«   2025/08   »
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
Tags
more
Archives
Today
Total
관리 메뉴

램준의 프로그래밍 독학 블로그

[C++] 난수 발생시키는 방법 본문

C++ 독학

[C++] 난수 발생시키는 방법

문예거 2021. 2. 5. 09:45

난수란 무작위의 수를 뜻한다.

C++에서는 일정값부터 쭉 나열되어 있는 난수 테이블을 가지고 있다.

그래서 난수를 발생시키면 그 난수 테이블이 가진 수들 중 하나가 반환되는 것이다.

 

#include <iostream>
#include <time.h>

using namespace std;

int main()
{
	srand(time(0));
    
    cout << rand() << endl;

	return 0;
}

 

이렇게 입력하면 난수가 발생하여 무작위의 수가 출력되게 된다.

그러나 완벽한 무작위의 수는 아니다.

srandrand 함수를 이용하여 만들어낸 난수는 완벽한 무작위의 수가 아니다.

 

맨 처음에 C++에서는 Seed 라는 것을 생성하게 된다.

srand 함수가 그 Seed를 생성하는데, 이후에 발생하는 난수들은 이 Seed를 기준으로 정해진 규칙에 따라 생성된다.

위의 코드에서는 srand 뒤에 붙은 (time(0)) 때문에 Seed가 현재 시각으로 설정되어 있다.

이 방법은 거의 대부분의 사람들이 사용하는 난수 생성법이다.

 

srand(time(0));

cout << rand() % 100 << endl;

 

만약 0 ~ 100 사이의 난수를 발생시키고 싶다면 위와 같이 입력해주면 된다.

이때 사용한 나머지 연산자(%)를 이용하면 된다.

 

난수에다가 100을 나누고 남은 나머지는 100보다 작을 수 밖에 없다.

그래서 최소값인 0부터 100까지의 난수가 발생할 수 있는 것이다.

 

srand(time(0));

cout << rand() % 10000/100.f << endl;

 

이렇게 소수 형태로 난수를 발생시킬 수도 있다.

나머지 연산자로 10000 이하의 난수를 발생시키고 100을 나눠 소수점을 두 자리 만들어주는 원리이다.