gpt4 book ai didi

php - 增加一条记录在随机选择中被选中的机会

转载 作者:太空宇宙 更新时间:2023-11-03 11:13:53 26 4
gpt4 key购买 nike

在使用 ORDER BY RAND() 时,您如何为某些记录赋予比其他记录更多的“权重”,从而增加它们被选中的机会?

最佳答案

我找到了 an extensive article on the problem它提供了一个订购解决方案。我离掌握概率、统计或任何类型的数学还非常非常远,但根据我自己的测试,它似乎非常可靠。它使用与“选择权重”列相同的想法。只需确保该列的默认值和所有值都非零。

WHERE selection_weight > 0 ... ORDER BY ( -LOG(1.0 - RAND()) / selection_weight )

使用 better random-selection query迈克发布的,你可以尝试这样的事情:

SELECT users.*
FROM ( SELECT id
FROM users
WHERE selection_weight > 0
ORDER BY ( -LOG(1.0 - RAND()) / selection_weight ) ) AS random_users
JOIN users ON random_users.id = users.id

此查询在我用于测试的包含 2,000 条记录的表上运行了 10 - 20 毫秒。希望对您有所帮助!


原始答案

如果表格中有一个整数列对应于选择权重:

ORDER BY RAND() * selection_weight DESC

这可能会很慢,但是..我会继续寻找更好的解决方案。

关于php - 增加一条记录在随机选择中被选中的机会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6638066/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com