본문 바로가기

[Terry] PHP

10. PHP 난수 관련

 난수

어떤 수들 중에서 임의로 결정된 하나의 수

 rand, srand, getrandmax

 난수를 발생시키기 위해서는 rand, srand, getrandmax라는 세가지 함수가 하나의 짝을 이루어 사용된다.

역할

rand 정해진 범위에서 하나의 수를 결정하여 리턴
srand 난수 발생 간격을 결정
getrandmax 발생할 수 있는 난수의 최대 범위를 리턴

형식

 저장될변수 = rand(최소값, 최대값);

예제

  1. <?
  2. echo getrandmax();   //난수로 뽑을수 있는 최대값 출력

  3. srand((double)microtime()*1000000);    //백만분의 1초 간격으로 난수 발생

  4. echo rand(0, 10);   //0에서 10까지의 수 중에서 하나의 수를 출력

  5. ?>

 

mt_rand, mt_srand, mt_getrandmax

rand, srand, getrandmax함수 앞에 mt라는 문자를 붙여놓은 함수는 Mersenne Twister 알고리즘을 이용하여 난수를 발생시키는 함수이다.

mt_rand함수는 rand함수보다 4배 정도 빠르고 더 큰 범위의 난수를 만들어 주면, 사용형식은 rand 함수와 동일하다.

역할

 

mt_rand 정해진 범위에서 하나의 수를 결정하여 리턴
mt_srand 난수 발생 간격을 결정
mt_getrandmax 발생할 수 있는 난수의 최대 범위를 리턴

 

형식

 저장될변수 = rand(최소값, 최대값);

예제

  1. <?
  2. echo mt_getrandmax();   //난수로 뽑을수 있는 최대값 출력

  3. mt_srand((double)microtime()*1000000);    //백만분의 1초 간격으로 난수 발생

  4. echo mt_rand(0, 10);   //0에서 10까지의 수 중에서 하나의 수를 출력

  5. ?>

 

 랜덤 문자열 출력

 웹서핑을 하다보면 방문할 때마다 다른 배너가 걸려 있는 것을 종종 볼 수 있다. 이렇게 배너가 변경되는 것을 난수 발생 방법으로 구현 가능한데, 이미지는 귀찮으니까 문자열로 구현해보자.

<?

//만일 이미지를 변경하고 싶다면 문자열 대신 <img src='이미지'>를 넣어주면 된다.

$a = array("무라카미하루키", "에쿠니가오리", "츠지히토나리");  

mt_srand((double)microtime()*1000000);

$result = mt_rand(0, 2);

echo $a[$result];

?>

 

 

이 글은 스프링노트에서 작성되었습니다.