2013-04-05 18 views
-1

我正在尝试创建一个算法来向用户显示一组问题,以便从最低难度开始并以难度级别进步如果用户回答错误,则回答正确的问题并回到难度级别。 我还没有开始编写代码,但我希望在应该如何解决这个问题方面取得先机。我的一般问题模型如下所示。基于难度和用户响应显示问题的想法或算法(C#)

public class Question 
    { 
     public int QuestionID { get; set; } 
     public string QuestionText { get; set; } 
     public int Difficulty { get; set; } //Can range from 1 to 5 
    } 

任何关于我可以从哪里开始的建议?

+4

你好,欢迎来到Stackoverflow!我把你的问题标记为“不是真正的问题”,因为它非常具有说服力。关于Stackoverflow的问题应该涉及具体的编程问题,而不是编码方法。阅读[常见问题](http://stackoverflow.com/faq)以获取更多信息 – Default 2013-04-05 11:55:53

+0

代码评论网站可能更合适:http://codereview.stackexchange.com/ – 2013-04-05 11:58:53

+0

@Default:虽然这不一定是最经典的SO问题,我认为它代表了一个相当常见的编程问题。我认为这是适当的。 – Kevin 2013-04-05 12:07:15

回答

0
public class Question 
{ 
    public int QuestionID { get; set; } 
    public string QuestionText { get; set; } 
    public int Difficulty { get; set; } //Can range from 1 to 5 
} 

public class User 
{ 
    public string Name { get; set; } 

    public int CurrentDifficulty { get; set; } 
    public Question Current { get; set; } 
    public HashSet<Question> Answered { get; set; } 
} 

public class QuestionData 
{ 
    private Random rnd = new Random(); 

    public List<Question> Questions { get; private set; } 

    public void Load() 
    { 
     Questions = new List<Question>(); 

     // load question data from database or file 
    } 

    public Question GetNextQuestion(User user) 
    { 
     List<Question> possible = (from e in Questions where e.Difficulty == user.CurrentDifficulty && !user.Answered.Contains(e) select e).ToList(); 
     return possible.Count == 0 ? null : possible[rnd.Next(possible.Count)]; 
    } 
} 
+0

谢谢。我现在可以了解如何开始的基本思路。感谢您的帮助... – 2013-04-08 05:16:46

0

您可能想看看ELO或微软的视频游戏Halo排名系统。这里有一些文章:

http://en.m.wikipedia.org/wiki/Elo_rating_system http://research.microsoft.com/apps/mobile/showpage.aspx?page=/en-us/projects/trueskill/details.aspx

这些算法用来确定在竞争激烈的游戏对抗对方人类玩家的相对技能。为了使它们适应你的情况,你可以给每个问题一个排序(在Halo算法中,标准偏差),它衡量你认为它与其他问题相比有多难,然后给玩家提供接近他的问题或她自己的等级。

+0

这些算法可能是矫枉过正的,所以如果有人提出更直接的解决方案,您可能需要使用它而不是= P – Kevin 2013-04-05 12:04:43

+0

此外,这个问题是我得到算法的地方:http:// stackoverflow .COM /问题/ 3660717 /比赛得分排名算法 – Kevin 2013-04-05 12:05:15