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 중국어 웹사이트의 기타 관련 기사를 참조하세요!