문제:
'id'와 같은 열이 있는 테이블이 있다고 상상해 보세요. '함량', '무게'입니다. '가중치' 값을 고려하여 이 테이블에서 행을 무작위로 선택하려고 합니다. 예를 들어 세 개의 행이 있는 경우:
id | content | weight |
---|---|---|
1 | some content | 60 |
2 | other content | 40 |
3 | something | 100 |
첫 번째 행의 선택 확률은 30%, 두 번째 행의 선택 확률은 20%, 세 번째 행의 선택 확률은 50%입니다.
해결책:
한 가지 접근 방식은 가중 저장소를 적용하는 것입니다. 샘플링:
SELECT id, -LOG(RAND()) / weight AS priority FROM your_table ORDER BY priority LIMIT 1;
이 방법을 사용하면 가중치에 비례하는 확률로 여러 요소 중 하나를 선택할 수 있습니다. 단일 요소를 선택하는 데 효과적으로 작동합니다.
이 기술은 [가중 저장소 샘플링](https://bit.ly/weighted-res-sampling) 문서에서 자세히 설명합니다. 이 기사에서는 POW(RAND(), 1/가중치)의 가장 큰 값을 선택하며 이는 -LOG(RAND()) / 가중치의 가장 작은 값을 선택하는 것과 동일합니다.
위 내용은 가중 확률이 있는 테이블에서 행을 무작위로 선택하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!