> 데이터 베이스 > MySQL 튜토리얼 > 가중 확률이 있는 테이블에서 행을 무작위로 선택하려면 어떻게 해야 합니까?

가중 확률이 있는 테이블에서 행을 무작위로 선택하려면 어떻게 해야 합니까?

Susan Sarandon
풀어 주다: 2025-01-01 13:38:10
원래의
600명이 탐색했습니다.

How Can I Randomly Select a Row from a Table with Weighted Probabilities?

가중 확률을 사용한 무작위 행 선택

문제:

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿