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

메모장

C언어 복습 12(Fake, Real Random Boy~) 본문

C언어 복습

C언어 복습 12(Fake, Real Random Boy~)

Captic 2019. 6. 25. 09:38

참고: 정덕 - <컴맹을 위한 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를 출력