승쨩개발공부
[C++] 난수(rand/srand) 본문
난수 (randon)
-> 순서나 규칙이 없는 무작위 수
-> 아이템 강화, 랜덤 박스, 크리티컬 확률 등
-> 확률이 적용되는 모든 것에 난수가 사용된다.
난수 추출 함수
-> rand()
-> rand함수를 사용하면 난수가 추출된다,
-> 단, 실핼 할 떄마다 같은 결과가 도출된다.
-> 위험한 상황이 발생할 수 있다.
난수 추출 시 같은 결과가 나오는 이유
-> 난수 추출 시 컴퓨터는 seed 값을 확인하여
-> 해당 seed 값에 있는 난수를 순차적으로 추출해준다.
-> 사용자가 seed 값을 변경하지 않을 경우 기본적으로 1의 값을 가진다.
-> 이로 인해 프로그램을 다시 실행할 경우에는 중복된 숫자가 보인다.
중복되지 않는 seed값
-> 시간
-> 하루단위, 한달 단위, 일년 단위 등 기간이 정해지면 중복된 숫자가 나올수 있다.
-> 이를 방지하기 위해 기간을 설정하지 않고 계속해서 누적해나가는 시간이 필요하다
-> 누적해 나간다 라는 말은 기준 시간이 필요하다
-> 1970년 1월 1일부터 시간을 누적하고 있다.
누적한 시간을 확인하는 함수
-> time(0)
-> 단, time함수를 사용하기 위해서는 #include <time.h> 추가가 필요하다
srand(unsigned(time(NULL)));
rand함수가 추출해주는 범위
-> 0 ~ 32767의 범위에서 추출해준다.
srand 사용 시 주의 사항
-> srand를 이용하여 seed값을 변경하면 추출 순서가 초기화 된다.
-> srand는 main 함수에 최초 1회만 선언해주면 된다.
-> 만약 여러번 선언을 하게 되는 경우 seed 값의 초기화가 여러번 진행되어 문제가 발생할 수 있다.
'C++' 카테고리의 다른 글
[C++] OOP(객체지향) 정리 (0) | 2022.01.05 |
---|---|
[C++] CallbyValue, CallbyAdress, CallbyReference (0) | 2022.01.04 |
[C++] 지역변수 / 전역변수 / 정적변수(static) (0) | 2021.12.14 |
[C++] 진수 (0) | 2021.12.14 |
[C++] 템플릿 (0) | 2021.12.07 |