Ruby 및 Rails에서 가중치를 계산하는 데 문제가 있습니다. 예시 적 시나리오로서, 우리 학교의 한 반에 대해 가중 평균 성적 계산이 있다고 가정 해보십시오. 클래스 레벨 가중치가 각각 0.25, 0.50 및 0.25 인 테스트 "a", "b"및 "c"가 있습니다. Jenny의 점수는 마지막 테스트에서 면제 된 곳의 0.95, 0.85 및 nil입니다. 학생이 시험에서 면제되면, 가중치는 시험에 포함되어서는 안됩니다. 아래의 jenny_grade_scores가 ActiveRecord Object이고 TEST_WEIGHTS가 모델의 상수라고 가정합니다. 보다 효율적으로 사용하는 것보다 이것에 대한 가중 점수를 계산하는 방법은 무엇가중치 평균 등급 계산 - nil을 사용한 해시 반복
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
이다 없음 분모 제니 분모 0.75이어야하므로 시험 C 1 (= 0.25 + 0.5 + 0.25) –
제니의 등급 점수 닐이다 없다. jenny_grade_scores [ "test_c"] 인 경우 jenny_test_weights [ "test_c_weight"] = 0.0을 참조하십시오. – UserDuser