본문으로 바로가기


  난수(random number)를 생성하려면 인수에서 난수를 발생시키는 범위를 지정할 수 있는 mt_rand() 함수를 사용합니다. 인수에서 아무것도 지정하지 않았을 경우 반환하는 난수값의 범위는 0에서 시작되어 mt_getrandmax() 함수(난수값의 최대치 표시)가 반환값이 됩니다.


● 난수의 시드값

  

  PHP는 난수를 생성할 경우 같은 숫자(seed 값)를 바탕으로 결정된 계산 방법으로 난수를 생성하므로 같은 시드값으로는 '동일한 값'이 '동일한 순서'로 생성됩니다. mt_rand() 함수의 시드값은 자동으로 설정되기 때문에 일반적인 설정이 필요 없습니다.

  

  명시적으로 시드값을 설정하려면 mt_srand() 함수를 사용해야 합니다. 다음과 같이 microtime() 함수(현재의 UNIX 타임스탬프를 마이크로초까지 되돌려줌)등을 사용하여 실행할 때 반드시 다른 값이 시드값으로 설정되도록 지정해야 합니다.


● 난수 생성하기

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>난수를 생성하고 싶을 때</title>
</head>
<body>
<div>
<?php
// 난수의 시드값을 설정한다
mt_srand((double) microtime() * 100000);

echo '<p>난수를 생성: 0 ~ ' . mt_getrandmax() . '</p>';
echo '<ul>';
echo '<li>' . mt_rand() .  '</li>';
echo '<li>' . mt_rand() .  '</li>';
echo '<li>' . mt_rand() .  '</li>';
echo '</ul>';

echo '<p>5~20까지의 난수를 생성</p>';
echo '<ul>';
echo '<li>' . mt_rand(5, 20) .  '</li>';
echo '<li>' . mt_rand(5, 20) .  '</li>';
echo '<li>' . mt_rand(5, 20) .  '</li>';
echo '</ul>';
?>
</div>
</body>
</html>

결과화면