가중 확률을 사용한 임의 행 선택
id, 콘텐츠, 가중치 등의 필드가 있는 테이블을 생각해 보세요. 귀하의 목표는 가중치를 고려하면서 이 테이블에서 단일 행을 무작위로 선택하는 것입니다.
예를 들어 다음 데이터가 포함된 세 개의 행이 있다고 가정합니다.
id, content, weight 1, "some content", 60 2, "other content", 40 3, "something", 100
확률 분포는 다음과 같습니다. :
가중 저장소 샘플링
이를 달성하기 위한 가장 간단한 접근 방식은 가중 저장소 샘플링을 사용하는 것입니다.
SELECT id, -LOG(RAND()) / weight AS priority FROM your_table ORDER BY priority LIMIT 1;
이 방법은 M의 합리적인 선택을 보장합니다. N개 요소 모음에서 요소를 선택합니다. 여기서 각 요소를 선택할 확률은 해당 요소의 가중치에 비례합니다. 단일 요소만 필요한 경우에도 여전히 효과적입니다.
가중 저장소 샘플링의 기본 원리는 제공된 문서에 자세히 설명되어 있습니다. 특히 기사에 설명된 대로 POW(RAND(), 1/weight)의 가장 큰 값이 아닌 -LOG(RAND())/가중치의 가장 작은 값을 선택하는 작업이 포함됩니다. 이는 동일한 결과를 가져옵니다.
위 내용은 SQL을 사용하여 가중치 테이블에서 행을 무작위로 선택하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!