경품이나 사은품 증정 같은 이벤트를 당첨방식으로 구현시
지정된 확률범위내에서 당첨인지 아닌지의 여부를 반환하는 함수를 작성해 보았다.
// 지정확률로 당첨 fn(00.00%) return bool
function probability($p) {
$n = 0;
$t = 0;
$c = 0;
$n = $p * 10000;
if ($n > 1000000) $n = 1000000;
if ($n < 1) $n = 0;
$t = mt_rand(0, 1000000);
if ($t <= $n) $c = 1;
return $c;
}
echo probability(15.25); // 15.25%의 확률로 1이 반환됨
확률 자체를 랜덤으로 구할 필요가 있을 경우 0~100의 범위에서 랜덤으로 반환하도록 하였다.
// 랜덤확률값 return 00.00%
function random_probability_rate() {
$t = 0;
$t = mt_rand(0, 1000001);
return round($t / 10000, 2);
}
echo random_probability_rate(); // 0~100범위의 아무 값이나 소수 2자리까지 반환됨