如何在MySQL表中添加“权重”并根据这些值选择随机值?
我想创建一个表,每行包含某种权重。然后我想选择概率值等于(该行的权重)/(所有行的权重)的随机值。例如,在1000行中有5行权重为1,2,3,4,5,则第一行的权重约为1/15
* 1000 = 67倍,依此类推。
该表将手动填写。然后我从中取一个随机值。但是我希望能够在填充阶段更改概率。
回答:
我在Quod
Libet中发现了这个不错的小算法。您可能可以将其转换为一些过程SQL。
function WeightedShuffle(list of items with weights): max_score ← the sum of every item’s weight
choice ← random number in the range [0, max_score)
current ← 0
for each item (i, weight) in items:
current ← current + weight
if current ≥ choice or i is the last item:
return item i
以上是 如何在MySQL表中添加“权重”并根据这些值选择随机值? 的全部内容, 来源链接: utcz.com/qa/419821.html