我会尽量保持清晰,并提供足够的例子。
由于本调查问卷没有“正确答案”,您如何选择“获胜者”?
要求这群人对以下问题给出个人答案:
订购以下列表从最重要的水果到不太重要的水果:
- Apple
- 橙色
- 菠萝
- 香蕉
答案顺序是随机的。然后,参与者可以使用拖放来组织列表并在将其提交给服务器之前构建他们的答案,该服务器将存储参与者所选择的元素的顺序。
答案示例:
Mr.1的回答: - 苹果 - 香蕉 - 橙子 - 菠萝
Mr.2的回答: - 香蕉 - 橙子 - 苹果 - 菠萝
Mr.3的回答: - 苹果 - 菠萝 - 香蕉 - 橙色
存储在以下SQL表中完成:
表[选择]
[ID] [标签]
1个苹果
2橙色
3个菠萝
4个香蕉
表[答案]
[ID] [回答] [点]
1 1; 4; 2; 3 NULL
2 4; 2; 1; 3 NULL
3 1; 3; 4; 2 NULL
当然,真正的问题要复杂得多,参与者必须订购一个包含大约20个元素的列表。我们将获得大约100个答案,我们预计不会提供两次答案。答案存储在MS-SQL 2012数据库中。
今天我的目标是编写C#算法,1)选择获胜者和2)给10个下一个“获胜者”,这样我们就可以有一个后备,以防有额外的东西给予。 如果有很多相似的答案,我会很容易选择胜利者,我只会根据回答相同排序列表的人数选择正确的答案,然后随机挑选一个有“正确答案”的人......但是我们想要一些基于统计数据的东西,比如首先选择的元素,第二个,最后一个等等。(顺便说一句:我不知道在这种情况下,如果你是选择获胜者的最统计道德方式,那么有更好的建议,请,请随意)最后给出答案的分数,并能够按分数点名单......
请提交具有以下代码的答案(或给出公式):
private List<Answers> GetWinners(List<Answers> AllAnswers)
{
List<Answers> toReturn = new List<Answers>();
//
// Magic stuff here where [Points] are set...
//
// The Winner should be the first one in the returned list.
return toReturn.OrderByDescending(w => w.Points).Take(10).ToList();
}
统计数据不是我的领域(我认为你已经有了:),请随时提出任何问题以确定主题。
编辑:获胜者是提交投票的人,而不是水果;)
谢谢!