# Language/[ C & C++ ]

[C & C++] rand()와 srand()함수

이론과 실습 사이 2019. 11. 5. 00:52
반응형

안녕하세요. 허언증입니다.

 

 

Rand() 함수는 난수를 발생 시킵니다.

난수는  seed 값에 따라 난수 값을 출력합니다 

기본 seed값은 1로 설정되어 있고

1을 바꾸면 다른 기준으로 난수를 발생합니다.

 

다시 실행을 하더라도 저 값을 항상 출력합니다.

41

18467

6334

26500

19169

seed가 1기 때문이죠

 


 

그럼 이번엔 srand()함수를 이용해 seed값을 바꾸도록 하겠습니다.

*time() 함수를 이용해서 시간으로 랜덤하게 부여함.

 

srand() 함수로 난수를 지정 후 출력을 하면 고정값이 아닌 

매번 다른 값으로 출력 하는걸 볼 수 있습니다.

 

DEV++ 인경우 #include<stdlib.h>를 적어 줘야합니다.

비쥬얼스튜디오는 생략 가능하고  

 

time()함수를 사용하기위해 

#include<ctime> 추가 해줘야 합니다.

 

 

 

 

srand() 범위

위 예제는 rand() 함수를 이용해서 특정 범위를 지정 안 했지만 

따로 지정도 가능하다 바로 예시로!!

 

 

ex)

rand() % 5 라고 가정을 하면

rand()0 ~ 32367사이의 값이 랜덤으로 출력된다.

이때 % 5이기 때문에 

0~32367 범위중 5로 나눈 나머지를 출력하게 되는데 

결국 출력이 되는 범위는 0~4로 모든수가 나눠서 나머지로 출력이 된다.

 

만약 0을 출력하고 싶지 않다면 

rand() % 5 +1 를 할 경우

rand() % 5 => 0~4 범위 하지만 +1를 했기때문에

범위는 1~5로 수정이 된다.

 

이렇게 자신이 특정 범위를 지정이 가능하다

 

예제.

rand() % 7 +1 =?

 

 

 

 

 


 

rand() / srand() 함수 예제

 

https://min-310.tistory.com/70

 

[C & C++] 로또 번호 추천 프로그램 (feat. rand()와 srand()함수 예제)

안녕하세요 허언증입니다! Point. 번호 중복해제 그냥 출력을 하면 랜덤함수로 중복이 발생하기 때문에 Shuffle을 생각해서 중복을 제거 ★결과★

min-310.tistory.com

 

 

 

 

 

 

 

반응형