如同前幾天所說
「估計戰力」是可以依照想看的不同能力去做的
例如我們把題目先依照章節進行分類
再去看看學生在不同章節下的能力
就可以用這個方法去做
可以先創建一個試算表的分頁
並依喜好命名,此分頁的工作就是當作學生戰力的資料庫
基本欄位就是
UID、學生姓名、能力欄位(對我而言,即章節名稱)
如果是第一次測驗
可以取初始值為0
若不選擇使用答對率作為題目戰力的估計
可以把題目的初始值也設為0
const K = 10; // 更新Elo時的敏感參數,太小則不好收斂,太大則不夠穩定
function correctProb(elo, ques_diff, choice_num){
var guess; // 猜測度
if (choice_num!=0){
guess = 1/choice_num;
} else{
guess = 0;
};
return guess + (1-guess)/(1+Math.exp(-(elo - ques_diff)));
}
function refreshElo(correct, elo, ques_diff, choice_num){
var prob = correctProb(elo, ques_diff, choice_num);
return K*(correct - prob);
}
其中,elo : 學生戰力,ques_diff : 題目難度,choice_num : 選項數
最後回傳的 K*(correct - prob)
就是要更新的幅度
學生為 elo := elo + K*(correct - prob)
題目難度為 ques_diff := ques_diff + K*(correct - prob)
除了用章節當作能力外
也可以考慮用知識、了解、評鑑什麼的六個指標(我已經忘了哪些了~XD)
不過要用這些指標的話
同時在自己的題目中也要標籤出這些指標
對我來說太麻煩所以我只對章節進行能力估計~