평범한 이야기들

[PHP] 특정 숫자를 제외한 랜덤한 숫자 뽑기 본문

평범한 개발 이야기/PHP

[PHP] 특정 숫자를 제외한 랜덤한 숫자 뽑기

songsariya 2023. 8. 22. 12:00
728x90

 

특정 숫자를 제외한 랜덤 숫자 뽑기

 PHP에서 숫자를 랜덤으로 뽑아서 사용해야 할 경우 사용하는 함수는 rand() 또는 mt_rand()를 이용해 사용합니다. 여기서 제가 원하는 범위를 줄 수 도 있습니다.

 

rand(1, 10) 1~10 사이의 랜덤 숫자를 리턴

 

여기서 1~10 사이 중에 제외하고 싶은 숫자가 있을 때는 어떻게 해야 할지 고민하다가 간단하게 구현할 수 있는 코드를 찾을 수 있었습니다. 해당 소스는 아래와 같습니다.

 

while( in_array( ($n = mt_rand(1,10)), array(6)));

복잡해 보이지만 참 간단한 소스입니다.


코드 설명

위 코드를 설명하면 아래와 같습니다.

  1. $n = mt_rand(1, 10) : 1~10 사이의 랜덤 숫자를 리턴해 변수 $n에 넣습니다.
  2. in_array($n, array(6)) :  변수 $n에 있는 값이 array(6)에 들어있는지 확인합니다.
  3. while( in_array() ) :  in_array가 참이면 while를 통해 loop를 다시 돕니다. 즉 $n의 값이 6이면 in_array 함수가 참이기 때문에 루프를 돌게 됩니다.
  4. $n의 값이 6이 아니면 while(false)가 되기 때문에 loop를 빠져나오고 $n값을 이용하면 됩니다.

이렇게 간단하게 확인해 볼 수 있습니다.
더 좋은 방법이 있으시면 댓글 부탁드립니다!

728x90
Comments