2012-12-25 64 views
2

我有大约100万条记录,女巫是在24天(每天一个)回答问题。彩票方法

我试图做到的是收集整个天所有正确答案,并再彩票选择一样,如果订户回答所有24个回答正确,他/她具有比被选中的概率较高一个只能正确回答一个回答的订户

我使用的LINQ到SQL为我倒更舒适的使用它,而不是纯粹的T-SQL,尽管这将是看门的T-SQL,但是LinqPad帮助我上,所以这里就是我这么远:

// 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 ...

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

没有必要向我展示代码,我可以明白,只有步骤,因为我不知道它们。

+1

这是一个简单的权重,即有24个答案意味着有24个机会?如果是这样,似乎你有正确的。 – SWeko

+0

你目前的做法有什么问题?有24个答案的人将有24倍的机会,比有一个答案的人更好 –

+0

@SWeko正是我想要做的,24个答案应该有24个机会! – balexandre

回答

0

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

编辑

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

让我知道,如果你有一个不同的想法,这将如何工作。

+1

它需要通过正确的问题数加权。 –

+0

好的。这一定是他通过彩票方式的意思。我编辑这个。 – joncodo

+0

考虑一下,真的,我已经有了这样的功能,比如'JK_ChallengeResponses'每个答案匹配一行,并且过滤只有正确的答案才会匹配,这就给了我我需要的东西!感谢您的开放:) – balexandre

1
  1. 创建彩票表。
  2. 对于每个订阅者,将他们的条目放在表格中,以便每个问题得到正确答案。
  3. 从该表中随机选择一条记录。