【发布时间】:2011-06-08 06:41:41
【问题描述】:
我有一张如下表:
Potion { id, name, freq }
我以“随机”的方式向用户赠送药水。但我希望能够控制随机性的频率,因为有些药水比其他药水更强大。最好的方法是什么?
我在想这样的事情:
id | name | freq
-------------------
1 | light | 5
2 | fire | 10
3 | water | 10
4 | earth | 10
5 | air | 5
光和空气比火、水和土更强大,因此它们的频率更小。
sum = select sum(*) from potions;
x = random(1..sum)
table = select * from potions;
offset = 0
for each element in table
if offset + element[freq] > x
chosen = element[name]
end
offset += element[freq]
end
我认为上面的代码(ruby + sql)可以工作,但它不可扩展,我非常怀疑它是否是最有效的方法。有人可以帮我这样做吗?
提前谢谢你,
【问题讨论】:
-
您已经成为会员 1 年 3 个月,问了 8 个问题,但从未接受过答案。
标签: mysql ruby random performance numbers