▶ 난수
- 난수 (Random Number) : 무작위로 만들어 지는 알 수 없는 값
ㄴ 패를 무작위로 섞기 위해 or 적의 움직임을 미리 알 수 없도록 하기 위해 난수가 반드시 필요하다.
ㄴ rand() 함수를 호출하면 0 ~ 32767 중의 임의의 값 중 하나를 불러온다.
ㄴ rand() 함수는 일정한 규칙에 따라 난수를 생성하는데 규칙이 항상 같으며 난수가 생성되는 순서도 항상 같다.
▷ 난수 생성 루틴
- 이러한 난수 생성 루틴 규칙에 변화를 줄 수 있는 srand()라는 함수가 있었다.
ㄴ OS랑 소통해서 만드는 난수가 많다.
- srand()는 난수 발생기에 난수를 발생시키는 시작점(Seed)ㄹ르 제공하여 난수 발생기는 이 시작점을 기준으로 난수를 발생 시킨다.
- 난수 발생시간 실행 될 시점의 시간은 예측할 수가 없기 때문에 시간 값을 시작점으로 사용한다면 난수를 만들 수 있다.
▶ 셔플
- 게임 프로그래밍에서의 셔플은 데이터를 섞는 행위를 말한다.
ㄴ 1. 프로그래머가 작성한 방식
ㄴ 어지간하면 1번을 사용해야 함.
ㄴ 만개 이하는 훨씬 더 저렴한 코스트로 수행이 가능하다.
ㄴ 2. 관련 함수를 이용해서 가능함.
ㄴ 데이터가 10만개 넘어가면 사용해야 됨. 불필요한 기능도 가져와서 메모리 사용량이 크다.
◇ 난수 분포도가 낮을 경우 평균 두번은 검사해야 한다.
▶ 완벽한 난수
ㄴ 회사에서 사용을 요구함.
- srand() / rand() 함수의 조합은 완벽한 난수를 생성 할 수 없다.
- 그렇기 때문에 C++11 버전에서 새롭게 추가된 랜덤 디바이스를 이용해야 완벽한 난수를 생성하는 것이 가능하다.
ㄴ Random Number Generator
'기초지식' 카테고리의 다른 글
08-1. 사용자 정의 자료형 (0) | 2023.05.16 |
---|---|
07. 삼항 연산자 + 문자열 (0) | 2023.05.15 |
06-1. 배열 (0) | 2023.05.11 |
05-3. 전처리기 (0) | 2023.05.11 |
05-2. 변수 / 상수 (0) | 2023.05.11 |