我正在进行一项查询,用户在比赛中输入点数。他们可以输入尽可能多的积分。我需要随机选择一名获胜者,但输入分数较多的人在技术上应该有更好的机会被选中。
我目前使用rand和每个用户的总积分总和来提取查询。
表数据如下所示:
fname lname user_id points John baker 1 300 Robert backster 2 40 jason Doe 3 900
如果我多次运行查询,John会有更好的机会,但是Jason会有更好的机会,John和Robert。
通过rand()
从表格顺序中选择*答案 0 :(得分:1)
在查询中完成所有操作会很困难,我个人会依赖你的后端。但如果您必须在MySQL中完成所有操作,我会寻找加权随机选择。
从this SO post开始,我发现this blog post讨论了它。
基本上,您将使用RAND()
函数和对数的某种组合来实现结果。据我所知,您可能需要知道总数/平均值才能获得乘数,但这也应该通过查询来实现。