【发布时间】:2011-03-24 17:18:54
【问题描述】:
我有一个行数据集,每行的“赔率”数字介于 1 到 100 之间。我希望以最有效的方式进行。几率加起来不一定是 100。
我有一些想法。
一) 选择整个数据集,然后将所有几率相加并生成一个介于 1 和该数字之间的随机数。然后循环遍历数据集,从数字中减去几率,直到它为 0。
我希望尽量减少对数据库的影响,所以我考虑是否只能选择我需要的行。
b)
SELECT * FROM table WHERE (100*RAND()) < odds
我考虑过LIMIT 0,1
但是如果物品具有相同的概率,则只会返回其中之一
或者,取整个数据集并从中选择一个随机数据集...但随后赔率会受到影响,因为它变成一个有赔率的随机数,然后是一个没有赔率的随机数,因此赔率变得有利于更高的赔率(偶数更是如此)。
我想我可以 order by oddsASC 然后获取整个数据集,然后使用 PHP 从行中随机抽取与第一条记录相同的概率(最低)。
似乎是一个笨拙的解决方案。
有人有更好的解决方案吗?如果不是,以上哪一项最好?
【问题讨论】:
-
你可能想看看这个问题:stackoverflow.com/questions/1819293/…
-
数据集中有多少行有赔率?
-
他们都有胜算。总共可能有 20 - 50 行。
标签: php mysql random probability