比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));
這似乎違反直覺的降低分數時的選項處於未選中狀態,如果它本來不正確如果當時選擇 - 但它似乎讓我更接近我追求的邏輯。實際上,所交付的分數似乎相當準確,直到您考慮選擇越來越多不正確的選項和不太正確的選項。
如果我必須的話,我會從我們的構建中挖掘出一個演示,並將它放置,讓我知道!
編輯: 呃,抱歉,我想太硬這一點,問題是:
如何交付準確%的分數,同時考慮到不正確的,正確的答案?
呃,對'yd'和'ut'的引用是YUI的便捷捷徑。 – danjah 2011-06-07 22:01:57
你有問題嗎? – 2011-06-07 22:06:08
如果現在這是一個可行的問題,可以隨意刪除-1 - 這對實際接收答案是一種威懾。 – danjah 2011-06-07 23:10:33