我在計算Ruby和Rails中的加權比率時遇到了問題。作爲一個說明性的情景,假設我們有一個學校班級的加權平均成績計算。我有分別具有0.25,0.50和0.25級別權重的測試「a」,「b」和「c」。 Jenny的分數分別爲0.95,0.85和零,她在最後一次考試中獲得豁免。當學生免於考試時,其權重不應該被視爲對他們不利。考慮下面的jenny_grade_scores是一個ActiveRecord對象,TEST_WEIGHTS是模型中的一個常量。加權平均等級計算 - 無零散迭代
jenny_grade_scores = { "test_a" => 0.95, "test_b" => 0.85, "test_c" => nil }
TEST_WEIGHTS = { "test_a_weight" => 0.25, "test_b_weight" => 0.50, "test_c_weight" => 0.25 }
什麼是計算該加權分數比使用更有效的方式:
jenny_test_weights = TEST_WEIGHTS #initialize a student test weight variable and adjust if test score is nil
jenny_test_weights["test_a_weight"] = 0.0 if jenny_grade_scores["test_a"].nil?
jenny_test_weights["test_b_weight"] = 0.0 if jenny_grade_scores["test_b"].nil?
jenny_test_weights["test_c_weight"] = 0.0 if jenny_grade_scores["test_c"].nil?
numerator = (jenny_grade_scores["test_a"] * jenny_test_weights["test_a_weight"] +jenny_grade_scores["test_b"] * jenny_test_weights["test_b_weight"] + jenny_grade_scores["test_c"] * jenny_test_weights["test_c_weight"])
denominator = (jenny_test_weights["test_a_weight"] + jenny_test_weights["test_b_weight"] + jenny_test_weights["test_c_weight"])
final_score = numerator/denominator
在這個例子中,結果應該是0.88333333
0.6625是分子和0.75是分母= 0.883333 – UserDuser
否分母爲1(= 0.25 + 0.5 + 0.25) –
Jenny的等級分數爲測試c是零,從而分母珍妮應該是0.75。請參閱jenny_test_weights [「test_c_weight」] = 0.0如果jenny_grade_scores [「test_c」]。nil? – UserDuser