具有加权概率的随机行选择
考虑一个包含列 id、内容和权重的表,任务是随机选择一行同时考虑到重量。在存在权重分别为 60、40 和 100 的三行的场景中,挑战是计算选择每一行的概率,如下所示:
加权水库抽样
这个问题的最佳方法是加权水库抽样,它可以有效地选择概率与其权重成正比的项目。以下是如何应用它:
SELECT id, -LOG(RAND()) / weight AS priority FROM your_table ORDER BY priority LIMIT 1;
此 SQL 查询采用以下逻辑:
这种加权水库采样技术可用于选择多行甚至整个表格具有加权概率,使其成为各种数据选择场景的通用解决方案。
以上是如何使用 SQL 从表中以加权概率随机选择一行?的详细内容。更多信息请关注PHP中文网其他相关文章!