"가중치 랜덤 구하기"의 두 판 사이의 차이

1번째 줄: 1번째 줄:




==PHP 함수==
*PHP 가중치 랜덤 계산
*weighted random
 
==함수==
<source lang='php'>
<source lang='php'>
function weighted_random($weights)
function weighted_random($weights)
14번째 줄: 17번째 줄:
</source>
</source>


==실행 예시==
위 함수를 이용하여 a, b, c 중 하나를 랜덤으로 선택하되, 그 확률이 10:20:70이 되도록 해보자.
위 함수를 이용하여 a, b, c 중 하나를 랜덤으로 선택하되, 그 확률이 10:20:70이 되도록 해보자.
<source lang='php'>
<source lang='php'>
20번째 줄: 24번째 줄:
$index = weighted_random($weights);
$index = weighted_random($weights);
$result = $values[$index];
$result = $values[$index];
echo $result;
</source>
==반복 실행 예시==
실제 비율이 그 정도로 나오는지 알아보기 위해 1000번 정도 반복 실행해보자.
<source lang='php'>
for($i=0;$i<1000;$i++)
{
  $index = weighted_random($weights);
  echo "<br/>".$values[$index];
}
</source>
</source>


[[분류:랜덤]]
[[분류:랜덤]]
[[분류:PHP]]
[[분류:PHP]]

2012년 4월 1일 (일) 21:13 판


  • PHP 가중치 랜덤 계산
  • weighted random

1 함수

function weighted_random($weights)
{
  $r = rand(1, array_sum($weights));
  for($i=0; $i<count($weights); $i++) {
  $r -= $weights[$i];
  if($r < 1) return $i;
  }
  return false;
}

2 실행 예시

위 함수를 이용하여 a, b, c 중 하나를 랜덤으로 선택하되, 그 확률이 10:20:70이 되도록 해보자.

$values = array('a','b','c');
$weights = array(10,20,70);
$index = weighted_random($weights);
$result = $values[$index];
echo $result;

3 반복 실행 예시

실제 비율이 그 정도로 나오는지 알아보기 위해 1000번 정도 반복 실행해보자.

for($i=0;$i<1000;$i++)
{
  $index = weighted_random($weights);
  echo "<br/>".$values[$index];
}
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}