如何在 MySQL 中对随机选择进行加权?

Patricia Arquette
发布: 2024-11-17 13:30:02
原创
489 人浏览过

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 的影响,因为乘数为零仍会导致条目出现在末尾排序列表。如果需要,可以使用 WHERE 子句从选择中排除乘数为 0 的条目:

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

以上是如何在 MySQL 中对随机选择进行加权?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板