|
필요 라이브러리 |
stdlib.h |
난수 생성 rand() |
time.h |
새로운 값 부여 |
*iostream에 stdlib.h.가 내장되어 있는 경우도 있습니다.
|
원리 |
rand() 는 원래는 기본 seed 값에서 수를 가져오는 것 뿐입니다.
기본적으로 계속 같은 수가 나오게 되어 있습니다.
1 2 3 4 5 6 7 8 9 | #include <iostream> #include <stdlib.h> using namespace std; main(){ int i; for ( i = 0; i < 10 ;i ++) cout << rand() << endl; } |
아무리 실행해도 이 값만 나온다...
그래서 seed 값을 바꾸어 주는 과정이 필요한데,
이것을 time.h 의 기능들을 이용해
현재의 시간을 받아오게 함으로써 seed값을 새로 설정해 주는 것입니다.
|
해결 |
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include <iostream> #include <time.h> #include <stdlib.h> using namespace std; main(){ srand((long)time(0)); // // long을 해주는 이유는 int 수의 범위를 벗어나서요. // unsigned int를 해주셔도 괜찮아요 int i; for ( i = 0; i < 10 ;i ++) cout << rand() << endl; //10개 출력 } | cs |
time 값에 현재 시간을 대입합니다.
long을 사용하는 이유는 2억을 넘어가는 경우가 있기에
터지지 않도록 하는 것입니다
unsigned도 괜찮아요.
|
응용 |
1 | cout << (rand() % 10000) + 1 << endl; | cs |
출력하는 수 뒤에
( % 원하는 수 ) + 1 을 하면
원하는 범위 안을 구할 수 있습니다.
'프로그래밍' 카테고리의 다른 글
[CMD, C++] 파일 삭제하기, string 이용하기 (0) | 2018.10.17 |
---|---|
영재원 과제 / 5월달 (0) | 2018.07.13 |
[C, C++] Bubble Sort 버블 정렬 코드, 정의 (0) | 2018.05.20 |
한양대 영재원 : 4월 단기연구과제 (0) | 2018.05.01 |