MySQL 中的加权随机条目选择
此问题涉及从 MySQL 表中选择随机条目,同时考虑“中指定的权重”乘数”栏。每个条目都根据此列中的值进行加权,值 0 表示不加权,1 表示双重加权,依此类推。
用户尝试使用 SELECT 和 RAND() 修改提供的代码,但在实现权重方面面临挑战。
解决方案在于使用 ORDER BY -LOG(1.0 - RAND()) / Multiplier,如类似的建议堆栈溢出线程。此公式根据乘数值有效地对条目进行加权,从而产生准确的结果。
但是,这种方法有一个限制:将乘数设置为 0 会导致除以零错误。为了缓解这一问题,可以使用 WHERE 子句过滤掉乘数值大于 0 的条目。
以上是如何从 MySQL 表中选择加权随机条目?的详细内容。更多信息请关注PHP中文网其他相关文章!