>백엔드 개발 >PHP 튜토리얼 >가중 확률을 사용하여 PHP에서 난수를 어떻게 생성할 수 있습니까?

가중 확률을 사용하여 PHP에서 난수를 어떻게 생성할 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-08 21:32:11784검색

How Can I Generate Random Numbers in PHP with Weighted Probabilities?

PHP에서 가중 확률을 사용하여 무작위 결과 생성

PHP에서 난수 생성에 대한 내용은 잘 문서화되어 있습니다. 그러나 사전 정의된 확률로 무작위화를 달성하려면 추가적인 접근 방식이 필요합니다. 이 질문은 8, 9, 10보다 3, 4, 5를 얻을 확률이 더 높은 1~10 사이의 임의 값을 생성하는 데 중점을 둡니다.

@Allain의 제안에서 영감을 받아 사용자 정의 함수를 개발했습니다. PHP에서 이러한 가중치 무작위화를 촉진합니다.

/**
 * getRandomWeightedElement()
 * Utility function for getting random values with weighting.
 * Pass in an associative array, such as array('A'=>5, 'B'=>45, 'C'=>50)
 * An array like this means that "A" has a 5% chance of being selected, "B" 45%, and "C" 50%.
 * The return value is the array key, A, B, or C in this case.  Note that the values assigned
 * do not have to be percentages.  The values are simply relative to each other.  If one value
 * weight was 2, and the other weight of 1, the value with the weight of 2 has about a 66%
 * chance of being selected.  Also note that weights should be integers.
 * 
 * @param array $weightedValues
 */
function getRandomWeightedElement(array $weightedValues) {
    $rand = mt_rand(1, (int) array_sum($weightedValues));

    foreach ($weightedValues as $key => $value) {
        $rand -= $value;
        if ($rand <= 0) {
            return $key;
        }
    }
}

이 함수에서 입력은 키가 원하는 결과를 나타내는 연관 배열이고 값은 해당 확률입니다. 이러한 확률은 백분율일 필요는 없으며 오히려 서로 상대적입니다.

PHP의 난수 생성기(mt_rand())와 누적 확률 접근 방식을 결합하여 함수는 배열에서 임의의 값을 선택합니다. 할당된 확률을 기반으로 합니다. 이를 통해 사용자가 정의한 편향으로 무작위 결과를 생성할 수 있어 다양한 애플리케이션에 사용할 수 있는 다재다능하고 효과적인 도구가 됩니다.

위 내용은 가중 확률을 사용하여 PHP에서 난수를 어떻게 생성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.