Notice
Recent Posts
Recent Comments
Link
«   2024/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
Tags
more
Archives
Today
Total
관리 메뉴

승쨩개발공부

[C++] 난수(rand/srand) 본문

C++

[C++] 난수(rand/srand)

Unknowns 2021. 12. 15. 14:23

난수 (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