1

我正在处理用户输入竞赛积分的查询。他们可以输入尽可能多的分数。我需要随机选择一个获胜者,但是从技术上讲,输入更多积分的人应该有更好的机会被选中。

我目前使用 rand 和每个用户的总点数拉取查询。

表数据如下所示:

fname lname user_id 点   
约翰贝克 1 300
罗伯特巴克斯特 2 40
杰森·多伊 3 900

如果我多次运行查询,John 将比 Robert 有更好的机会,但 Jason 会比 John 和 Robert 有更好的机会。

select * from table order by rand()

4

1 回答 1

1

在查询中完成所有操作会很困难,我个人会稍微依赖您的后端。但是,如果您必须在 MySQL 中完成所有操作,我会寻找加权随机选择

这篇 SO post中,我发现了这篇讨论它的博客文章。

基本上,您将使用RAND()函数和对数的某种组合来实现您的结果。据我所知,您可能需要知道总数/平均值才能获得乘数,但这也应该可以通过查询来实现。

于 2013-10-18T01:43:27.980 回答