gpt4 book ai didi

ruby-on-rails - Rails 使用权重查询随机记录

转载 作者:数据小太阳 更新时间:2023-10-29 08:11:48 26 4
gpt4 key购买 nike

假设我有一个模型 Product

有产品

id | title   | weight (integer)
1 | Sugar | 1
2 | Salt | 1
3 | Pepper | 2
4 | Coke | 5

所以,我想使用权重获得少量(比如说 2 个)随机产品。

Product.limit(2).rand_with_weights # =>
# The probability of coke is in array is 5x times bigger than salt or sugar and 2.5x times bigger than pepper
# The probability of pepper is in array is 2x times bigger than salt or sugar
# The probability of salt or sugar in array is equal

我该如何查询?

最佳答案

根据 Efraimidis 和 Spirakis 的论文: https://utopia.duth.gr/~pefraimi/research/data/2007EncOfAlg.pdf

如果您使用的是 postgres:

Product.order("RANDOM() ^ (1.0 / weight) DESC").limit(2)

概念证明:http://sqlfiddle.com/#!17/474d2/4/0

如您所见,分布符合预期

关于ruby-on-rails - Rails 使用权重查询随机记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31493673/

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