彩票方式

时间:2012-12-25 12:09:39

标签: c# sql linq-to-sql

我有大约100万条记录,在24天内(每天一条)回答问题。

我想要完成的是在整个日子里收集所有正确的答案然后进行抽奖选择,例如如果订阅者正确回答了所有24个答案他/她有一个选择的概率高于仅正确回答一个答案的订阅者

我正在使用 Linq-to-Sql ,因为我更习惯使用它,而不是纯粹的T-SQL,即使这将是T-SQL的搬运工,但{ {3}}帮助我,所以这就是我到目前为止所做的:

// all correct answers id's
var correct = from a in JK_ChallengeAnswers
              where a.correct
              select a.challenge_answer_id;

// all correct answers 
var query = from cr in JK_ChallengeResponses
            where correct.Contains(cr.challenge_answer_id)
            select cr;

query.Count().Dump(); // 978144

var random = new Random();
int pos = random.Next(query.Count()); // random select

query.Skip(pos).Take(1).Dump(); // get one...

这是直截了当的...它是线性的,没有“票证”的方法,这里有一个人回答了1个问题作为回答所有24个问题的人的确切胜率......

我如何去尝试彩票方法,我的下一步应该是什么?

无需向我展示代码,我可以得到它,只有步骤,因为我没有得到它们。

2 个答案:

答案 0 :(得分:1)

  1. 创建一张彩票表。
  2. 对于每个订阅者,对于他们正确的每个问题,将他们的条目放在表中一次。
  3. 随机选择该表中的记录。

答案 1 :(得分:0)

创建一个包含所有正确回答的人名的视图。然后,您可以使用随机数生成器来选择id与随机数匹配的人。如果您需要更多帮助,请问我。

修改

对我来说,彩票方法已经为你效果,因为每个人每天都能猜出24天的答案。这意味着他们在你的表中有24个答案,外键指向正确的答案。通过这样做,如果我向数据库提交了24个条目,我有更好的机会得到正确的答案。这将使我的方法有效。

如果您对此如何运作有不同的想法,请告诉我。