운영자에 대한 알림 : 이것은 숙제가 아닙니다.PHP : 동일한 확률로 변수에 값을 분산하는 방법은 무엇입니까?
$points = 10;
$a = 0;
$b = 0;
$c = 0;
$d = 0;
나는 무작위로 포인트가 제로에 도달 $까지 ($ A, $ B를, $의 C, $ d 개) 변수에 포인트를 배포 할 :
나는 다음 예제를 가지고있다. 그래서, 일부 기능/스크립트를 실행 한 후 예상 임의의 출력은, 다음과 같이
$points = 0;// Must be zero
$a = 3;
$b = 1;
$c = 0;
$d = 6;
을 나는 다음은 간단한 솔루션,하고 생각 해요 :
는while($points > 0) {
$points_taken = mt_rand(0, $points);
$points -= $points_taken;
$a += $points_taken;
$points_taken = mt_rand(0, $points);
$points -= $points_taken;
$b += $points_taken;
$points_taken = mt_rand(0, $points);
$points -= $points_taken;
$c += $points_taken;
$points_taken = mt_rand(0, $points);
$points -= $points_taken;
$d += $points_taken;
}
기능은 한 문제가를 : $ a는 목록에서 처음이기 때문에 더 많은 포인트 (또는 모든 포인트)를 얻을 수있는 기회가 훨씬 더 높습니다. $ d는 목록에서 마지막이기 때문에 더 적은 포인트 (또는 전혀 포인트가없는)를 취할 확률이 훨씬 높습니다 .
질문 : 모든 변수에 동일한 배분 기회를 부여하려면 어떻게합니까?
참고 : 변수 중 하나가 모든 점을 취한다면 괜찮습니다.
배열 내에서 작동하며 http://php.net/array_rand를 확인하십시오. – Calimero
끝에 $ points를 0으로 설정해야합니까? – Manav
@Manav 꼭 그렇지는 않겠지 만, 10 점 만점으로 배포 해 드리겠습니다. – evilReiko