차림

2007년 2월 4일

PHP 그림 무작위로 보여주기 - 가중치 적용

웹 문서를 읽을 때마다 여러 개의 그림 가운데 하나를 무작위로 보여주긴 하되, 만약 어떤 그림이 좀 더 자주 뜨게 하고 싶다면 if문을 이용해 가중치를 두면 된다.

만약 앞의 문서 PHP 그림 무작위로 보여주기의 첫 번째 예에서, 둘리가 뜰 확률을 50%로 하고 싶다면 코드를 다음과 같이 고친다.


코드 소스 3

<?php // 그림 무작위로 보여주기
$img_total = 4;
$img_no = rand (1, $img_total);
if ($img_no == 1 || $img_no == 4) { ?>
  <img src="dooli.jpg" alt="둘리" />
  <?php  }
elseif ($img_no == 2) { ?>
    <img src="douner.jpg" alt="도우너" />
  <?php  }
elseif ($img_no == 3) { ?>
    <img src="gogildong.jpg" alt="고길동" />
  <?php  }
?>

도우너는 $img_no가 2일 때, 그리고 고길동은 3일 때만 그림이 뜨지만 둘리는 1이거나 4일 때 그림이 뜨게 되므로 둘리 그림이 뜰 확률은 50%가 된다.

아주 많은 그림

만약 앞의 문서 PHP 그림 무작위로 보여주기의 두 번째 예에서처럼, 그림이 너무 많아서 파일 이름에 규칙 있게 숫자를 붙인 경우, photo1.jpg가 뜰 확률을 50%로 하고 싶다면 코드를 다음과 같이 고친다.


코드 소스 4

<?php // 그림 무작위로 보여주기
$img_total = 38;
$img_no = rand (1, $img_total);
if ($img_no > 1 && $img_no <= 20)
  echo "<img src='photo".$img_no.".jpg' alt='그림 ".$img_no."' />";
else 
  echo "<img src='photo1.jpg' alt='그림 1' />";
?>

그림은 모두 20개가 있고 1번 그림만 50% 확률로 뜨게 할 것이므로, $img_total은 20에서 1을 뺀 19에 50% 확률을 위한 19를 더해 38을 적어준다. 그리고 if문에 따라 $img_no가 1보다 크고 20보다 작거나 같을 때는 2번부터 20번까지의 그림이 뜨고 그 나머지 경우에는 1번 그림이 뜨게 된다.

$img_total은 전체 그림의 개수와 특정 그림을 어떤 확률로 뜨게 할 것이냐에 따라 달라진다.

목록