2013-04-05 54 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