램준의 프로그래밍 독학 블로그
[C++] 난수 발생시키는 방법 본문
난수란 무작위의 수를 뜻한다.
C++에서는 일정값부터 쭉 나열되어 있는 난수 테이블을 가지고 있다.
그래서 난수를 발생시키면 그 난수 테이블이 가진 수들 중 하나가 반환되는 것이다.
#include <iostream>
#include <time.h>
using namespace std;
int main()
{
srand(time(0));
cout << rand() << endl;
return 0;
}
이렇게 입력하면 난수가 발생하여 무작위의 수가 출력되게 된다.
그러나 완벽한 무작위의 수는 아니다.
srand와 rand 함수를 이용하여 만들어낸 난수는 완벽한 무작위의 수가 아니다.
맨 처음에 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을 나눠 소수점을 두 자리 만들어주는 원리이다.
'C++ 독학' 카테고리의 다른 글
[C++] 코드 내에서 유용한 도스 명령어 (0) | 2021.02.05 |
---|---|
[C++] 타입 또는 변수의 일부 속성을 출력하는 법 (0) | 2021.02.05 |
[C++] if 문의 구조 (0) | 2021.02.04 |
[C++] float 변수 사용시 유의점 (0) | 2021.02.04 |
[C++] 기본 연산자, 증감 연산자, 논리 연산자 (0) | 2021.02.04 |