首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >生成一个随机赢家并显示获胜的几率-我这样做对吗?

生成一个随机赢家并显示获胜的几率-我这样做对吗?
EN

Stack Overflow用户
提问于 2009-11-02 02:30:44
回答 5查看 452关注 0票数 1

我在一个网站上举办了一场比赛,我有3215名参赛者有资格获得5倍的索尼PSP。

我相信计算赔率的公式是totalEntrants -奖品/奖品:

(3215-5)/5 = 642,所以获胜的几率是642%,对吗?(我的数学很差)

在数据库中包含3215行的表中,我会像这样随机选择一行吗?

代码语言:javascript
复制
SELECT * from entries
WHERE entries.won = 0
ORDER BY RAND()
LIMIT 1

现在我有了一行,我需要将won列设置为1,这样参赛者就不能再次获胜,然后再次运行它?这是我第一次这样做,所以我只是想确认一下我做得是否正确。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-11-02 02:36:08

没错。五个人可以赢,有3215个参赛者,所以获胜的几率是3215×5,也就是643中有1个,或者说642比1。每643个赢家中就有一个,这意味着每1个赢家中就有642个输家。请注意"x in y机会“和”x到y机会“之间微妙的一次性差异。

您的选择方法看起来很好。您也可以通过将其更改为LIMIT 5来一次将它们全部选中。

票数 6
EN

Stack Overflow用户

发布于 2009-11-02 02:36:43

为什么不使用LIMIT 5一步选出优胜者呢?

票数 2
EN

Stack Overflow用户

发布于 2009-11-02 02:39:37

获胜的几率是totalEntrants /奖品

没有必要减少奖品的数量。例如,如果我们有两个参赛者和一个奖品,赔率是2/1,这意味着每个参赛者有两个中奖机会中的一个(如果我们减少奖品的数量,它是1/1,意味着一对一的机会-肯定赢了……)

这个查询看起来是对的:

  • 相同的参赛者不会被选择两次(假设您有更新'won‘字段的代码)
  • 用户将通过每次查询

时随机生成不同的顺序来随机选择

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1657893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档