我在一个网站上举办了一场比赛,我有3215名参赛者有资格获得5倍的索尼PSP。
我相信计算赔率的公式是totalEntrants -奖品/奖品:
(3215-5)/5 = 642,所以获胜的几率是642%,对吗?(我的数学很差)
在数据库中包含3215行的表中,我会像这样随机选择一行吗?
SELECT * from entries
WHERE entries.won = 0
ORDER BY RAND()
LIMIT 1现在我有了一行,我需要将won列设置为1,这样参赛者就不能再次获胜,然后再次运行它?这是我第一次这样做,所以我只是想确认一下我做得是否正确。
发布于 2009-11-02 02:36:08
没错。五个人可以赢,有3215个参赛者,所以获胜的几率是3215×5,也就是643中有1个,或者说642比1。每643个赢家中就有一个,这意味着每1个赢家中就有642个输家。请注意"x in y机会“和”x到y机会“之间微妙的一次性差异。
您的选择方法看起来很好。您也可以通过将其更改为LIMIT 5来一次将它们全部选中。
发布于 2009-11-02 02:36:43
为什么不使用LIMIT 5一步选出优胜者呢?
发布于 2009-11-02 02:39:37
获胜的几率是totalEntrants /奖品
没有必要减少奖品的数量。例如,如果我们有两个参赛者和一个奖品,赔率是2/1,这意味着每个参赛者有两个中奖机会中的一个(如果我们减少奖品的数量,它是1/1,意味着一对一的机会-肯定赢了……)
这个查询看起来是对的:
时随机生成不同的顺序来随机选择
https://stackoverflow.com/questions/1657893
复制相似问题