2011-06-07 126 views
-1

this SO question比較複雜,我後測驗得分計算您的想法是,這是我的情況:分數計算邏輯

我有X的期權數量(任何HTML元素可以提供作爲一個選項),從中用戶可以選擇一組選項作爲他們的答案。到目前爲止,我試圖讓事情一般是:1,如果一個正確

  • 保持正確答案
  • 進行比較,選定答案,正確答案的數組,通過索引條目
  • 遞增得分找到匹配
  • 單獨處理無線選項的問題,因爲它們總是真/假無論如何下面

示例:假設與正被正確節點0,1,2 6個牽開節點如果選中。 'selectedAnswers'是一個數組,其中包含任何選定的distractor的索引值。 'correctAnswers'是一組預定正確的干擾指標。

// Each option is worth a standardised amount, unless custom weightings 
// are required - not implemented. 
var weighting = (100/this.distractors.length); 
var score = 0; 
for(var i=0;i<this.selectedAnswers.length;i++){ 
    if(ut.arrayContains(this.correctAnswer, this.selectedAnswers[i])){ 
    // Correct answer found, increase total 
    score += weighting*2; 
    } else { 
    if(yd.hasClass(this.distractors[ this.selectedAnswers[i] ], SELECTED_CLASS)){ 
     // Penalise the score by a double weightingfor selecting an incorrect answer 
     score -= weighting*2; 
     //log('reducing score by 2 weightings'); 
    } else { 
     // Penalise the score by a single weighting for leaving an incorrect node unselected 
     score -= weighting; 
     //log('reducing score by 1 weighting'); 
    } 
    } 
} 
this.score((score<0)? 0 : Math.ceil(score)); 

這似乎違反直覺的降低分數時的選項處於未選中狀態,如果它本來不正確如果當時選擇 - 但它似乎讓我更接近我追求的邏輯。實際上,所交付的分數似乎相當準確,直到您考慮選擇越來越多不正確的選項和不太正確的選項。

如果我必須的話,我會從我們的構建中挖掘出一個演示,並將它放置,讓我知道!


編輯: 呃,抱歉,我想太硬這一點,問題是:

如何交付準確%的分數,同時考慮到不正確的,正確的答案?

+0

呃,對'yd'和'ut'的引用是YUI的便捷捷徑。 – danjah 2011-06-07 22:01:57

+0

你有問題嗎? – 2011-06-07 22:06:08

+0

如果現在這是一個可行的問題,可以隨意刪除-1 - 這對實際接收答案是一種威懾。 – danjah 2011-06-07 23:10:33

回答

0

我已經看中了這一點,但我仍然不認爲它涵蓋了足夠的理由:

var correctWeighting = 100/this.correctAnswer.length; 
var incorrectWeighting = 100/(this.distractors.length-this.correctAnswer.length); 
var score = 0; 
for(var i=0;i<this.selectedAnswers.length;i++){ 
    // Scan through all selected distractors and determine if they are in/correct, 
    // adjusting the score accordingly 
    if(ut.arrayContains(this.correctAnswer, this.selectedAnswers[i])){ 
     score += correctWeighting; 
    } else { 
     score -= incorrectWeighting; 
    } 
} 

// The score can be calculated to be <0 if there are many incorrect distractors 
// selected, which isn't technically wrong (if a bit imprecise?), but a workable 
// score should be in the 0-100 range. 
this.score((score<0)? 0 : Math.ceil(score)); 

看來,除了再次,當許多不正確的答案的選擇和很少或沒有正確工作一些是(比分進入負面)。一個例子說明這可能不夠好,如果我有10個左右的選項,其中3個是正確的,我選擇了1個正確的(+ 34%),並且選擇了3個以上,但是不正確。在這種情況下,說出用戶至少應該爲他們的1個正確選擇的答案值得一些功勞是合理的。

它幾乎覺得我需要調整'correctWeighting',這取決於圍繞'incorrectWeight'旋轉的一些因素。