메모장
C언어 복습 12(Fake, Real Random Boy~) 본문
참고: 정덕 - <컴맹을 위한 C언어>
♨ 개인적 해석이 다분한 글임으로, 인지하지 못한 오류가 있을 수 있습니다 ♨
▣ 진짜 랜덤, 가짜 랜덤, 난수 생성 방법
- 랜덤의 종류
1. 진짜 랜덤: The REAL, 물리적인 자연현상을 이용해 난수를 생성하는 방식
가짜 랜덤 방식에 비해 난수 생성 속도가 느리다
2. 가짜 랜덤: 계산 결과의 예측이 어려울 뿐 복잡한 점화식을 이용해 난수를 생성하는 방식
예측 사능성이 있고, 주기가 있다
▣ 시드를 설정해주는 srand()
- C언어의 난수 발생 함수 -> 가짜 랜덤 방식을 이용: 시드(seed) 설정 필요
시드: 가짜 랜덤 방식은 점화식에 숫자를 넣어 결과 계산 -> 그 값을 다시 식에 넣어 결과 계산의 반복
∴ 입력해주어야 하는 첫 번째 항 = 시드
1. 시드를 설정해주는 함수인 srand() 사용 -> srand함수를 위해 stdlib.h 헤더파일 포함
#include<stdlib.h>
srand(숫자) -> 여기서 숫자는 unsigned int 사용
※ unsigned = 부호가 없는 = Only 양수 = 음수가 없어서 표현할 수 있는 수가 그냥 int 보다 많다
자세한 설명은 추후에 나온다
2-1. 시드 값이 매번 다르게 하고 싶기 때문에 대부분 현재 시간의 '초'(전승지기 아님)를 시드값으로 사용
#include<time.h>
#include<stdlib.h>
srand((unsigned int)time(NULL));
2-2. 프로세스 ID: '프로그램을 실행할 때마다' 현재 실행중인 프로그램에 매겨지는 고유한 번호
-> 프로그램을 실행할 때 마다 매번 달라진다
getpid 함수를 호출하면 현재 프로그램의 프로세스 ID가 반환
※ 컴맹을 위한 C언어 자체가 VS가 아닌 Dev-C++를 사용하기에 가능한 부분
-> Dev-C++을 사용하거나, VS에서 getpid와 같은 역할을 하는 함수를 사용하는 것이 옳다
-> getpid함수를 사용하기 위해 unistd.h 헤더파일 포함
#include<stdlib.h>
#include<unistd.h>
srand((unsigned int)getpid);
▣ 랜덤 값을 뽑아내는 rand() srand로 시드 설정
-> rand 함수 호출하면 난수 반환 -> 반환된 난수 값이 짝수이면 lucky, 홀수이면 unlucky를 출력
'C언어 복습' 카테고리의 다른 글
C언어 복습 14 (자료형) (0) | 2019.06.26 |
---|---|
C언어 복습 13(이름을 부르면 인사해주기) (0) | 2019.06.25 |
C언어 복습 11 (10진수를 2진수로, 비트연산자) (0) | 2019.06.22 |
C언어 복습 10 (구구단을 외자 - 반복문) (0) | 2019.06.21 |
C언어 복습 9 (입력받은 숫자로 카운트다운 - 재귀함수) (0) | 2019.06.18 |