我正在实现一个轮盘赌轮选择,我希望尽可能多的代码保留在SQL中。我的尝试产生了下面的查询。$1是一个与我发送给SQL代码的权重相同范围的随机变量(不清楚如何使random()只被调用一次)。重量是轮子上的行槽的大小。random()是一个返回随机数的SQLITE函数。下面是完整的查询:
SELECT id
FROM items
WHERE weight >= $1
ORDER BY random()
LIMIT 1
我的问题是,这还是轮盘赌盘吗?基本算法需要对所有权重求和,然后选择范围0..sum的随机值--这将确定选择哪一行。相反,这个例程首先过滤满足一个随机数的所有行,然后打乱它们的