programming/c , c++

[테트리스개발]c언어 난수생성

worldint 2021. 7. 12. 02:37

무작위로 블록이 나와야하기때문에 난수가 필요하다.

블록모양이 총 7개니까 배열을 만들어서 모양을 저장해놓구

그중에 하나를 무작위로 선택되어야 한다

 

그러므로 0~6까지의 7가지 숫자가 나오면되고

rand()함수를 사용해서 만들어줍니다

rand()함수를 사용하면 0~32767범위의 숫자를 반환해준다

 

int random;

random = rand(); 

이런식으로 사용하면되고, 나머지 연산을 활용해서 내가필요한 숫자만 나오게해준다

random = rand()%7 이렇게 쓰면 rand()에서 반환된 숫자를 7로나눈 나머지이다.

그러므로 0~6까지의 숫자를 얻을수있다.

 

이렇게하면 프로그램 실행시 마다 매번 똑같이 반복되는 수를 얻게되므로 난수라고 할수없다

그 이유는 rand()함수의 시드값이 일정하기 때문에다

rand()함수의 시드값을 바꿔주는 함수 srand()라는 함수이고 매개변수에 매순간 바뀌는 시간값을 넣어주면 된다.

 

srand(time(NULL));  //프로그램 실행시마다 rand에 매번 다른 시드값이 들어간다

int random = 0; 

random = rand()%7;

 

이런식으로 쓰면 된다.