티스토리 뷰
난수생성 방법에 대해 알아보겠습니다.
코딩을 하다보면, 가끔 임의의 수가 필요할 때가 있습니다. 이러한 랜덤한 숫자를 ‘난수’ 라고 부릅니다. 난수를 이용한다면 실행할 때 마다 랜덤으로 바뀌는 숫자를 만들 수 있습니다.
rand() 함수만을 사용해서 난수를 생성한다면 완전한 난수가 생성되는게 아닌 것을 쉽게 알 수 있습니다. 이런 현상을 막기 위해서는 srand() 함수와 time() 함수를 통해서 시드값을 생성해 주어야합니다.
time(NULL)은 1970년 1월 1일 이후로 현재까지의 시간을 초 단위로 반환해주는 함수입니다.
간단한 예제를 통해 보도록 하겠습니다.
예제 코드:
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 | /* *C언어 난수생성* */ #include <stdio.h> #include <stdlib.h> // rand() , srand() #include <time.h> #define MAX 100 int main() { long seconds = (long)time(NULL); srand(seconds); /*1에서 100까지의 난수 생성*/ printf("1 ~ %4d 사이의 난수 5개:\n", MAX); for (int i = 0; i < 5; i++) printf("%4d ", rand() %MAX + 1); puts(""); /* 50에서 100까지의 난수 생성*/ printf("50 ~ %4d 사이의 난수 5개:\n", MAX); for (int i = 0; i < 5; i++) printf("%4d ", rand() %(MAX-49) + 50); puts(""); return 0; } | cs |
1부터 n까지의 난수를 발생시키려면
rand()%n +1 을 사용해주시면 되고
a부터 b까지 난수를 발생시키려면
rand()%(b-a+1) +a 를 입력해주시면 됩니다.
난수 생성하는 방법은 이처럼 간단하기 때문에 한번 익혀두면 좋습니다.
'Programming Languages > C++ & Algorithm' 카테고리의 다른 글
재귀 함수를 이용한 부분 집합 생성 알고리즘 (0) | 2020.09.18 |
---|---|
[Algorithm] ios::sync_with_stdio(0); C++ 입출력 속도 (0) | 2020.09.17 |
_CrtisValidHeapPointer(block) 런타임 에러 (0) | 2020.06.04 |
[C언어] 포인터 변수 기초 (0) | 2018.10.17 |
[C언어] #define 활용 - 매크로 (0) | 2018.10.15 |
댓글