>백엔드 개발 >PHP 튜토리얼 >MySQL에서 무작위 선택에 가중치를 부여하는 방법은 무엇입니까?

MySQL에서 무작위 선택에 가중치를 부여하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-17 13:30:02548검색

How to Weight Random Selections in MySQL?

MySQL에서 무작위 선택에 가중치 부여

대규모 데이터세트로 작업할 때 관련 가중치를 고려하면서 항목을 무작위로 선택해야 할 수도 있습니다. 각 항목마다. MySQL에서는 함수와 가중치 승수의 조합을 사용하여 이를 달성할 수 있습니다.

테이블에서 단일 항목을 선택하려면 SELECT 문을 사용하세요. 선택 항목을 무작위로 지정하려면 RAND() 함수를 사용하십시오. 그러나 가중치를 적용하려면 추가 단계가 필요합니다.

항목이 있는 테이블과 해당 항목의 가중치를 나타내는 "승수" 열을 생각해 보세요. 승수가 더 높은 항목에 선택 가중치를 부여하려면 다음 구문을 사용하여 명령문을 수정합니다.

SELECT *
FROM table_name
ORDER BY -LOG(1.0 - RAND()) / Multiplier
LIMIT 1;

이 표현식에서 ORDER BY 절은 계산된 값의 오름차순으로 결과를 정렬합니다. 값은 0과 1 사이의 난수의 음의 로그를 승수로 나누어 파생됩니다. 승수가 더 높은 항목은 계산된 값이 더 작아지고 정렬된 목록에서 더 일찍 나타납니다. 그런 다음 LIMIT 1 절은 최상위 항목을 가중치가 적용된 무작위 선택으로 선택합니다.

이 방법은 승수 값 0의 영향을 받지 않습니다. 승수가 0이어도 여전히 항목이 항목 끝에 표시되기 때문입니다. 정렬된 목록. 원하는 경우 WHERE 절을 사용하여 승수가 0인 항목을 선택에서 제외할 수 있습니다.

SELECT *
FROM table_name
WHERE Multiplier > 0
ORDER BY -LOG(1.0 - RAND()) / Multiplier
LIMIT 1;

위 내용은 MySQL에서 무작위 선택에 가중치를 부여하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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