2016-07-11 6 views
1

Как я могу оценить этот тест с помощью php? Мне нужен процентный балл ...Сортировка по средневзвешенным значениям в php

У меня есть множество вопросов, содержащих правильный/неправильный bool и соответствующий вес.

Должен ли я сначала найти среднее значение правильных ответов?

Каким будет уравнение?

$questions = array(
    0=>array(
     'Question'=>"Some Question", 
     'Correct'=>true, 
     'Weight'=>5, 
    ), 
    1=>array(
     'Question'=>"Some Question", 
     'Correct'=>false, 
     'Weight'=>5, 
    ), 
    2=>array(
     'Question'=>"Some Question", 
     'Correct'=>true, 
     'Weight'=>4, 
    ), 
    3=>array(
     'Question'=>"Some Question", 
     'Correct'=>true, 
     'Weight'=>0, 
    ), 
    4=>array(
     'Question'=>"Some Question", 
     'Correct'=>false, 
     'Weight'=>5, 
    ), 
    5=>array(
     'Question'=>"Some Question", 
     'Correct'=>true, 
     'Weight'=>4, 
    ), 
); 
$weights = array(
    0=>0 
    1=>0 
    2=>.05 
    3=>.20 
    4=>.25 
    5=>.50 
); 
$totalQuestions=0; 
$correctAnswers=0; 
$points=0; 
foreach($questions as $question){ 
    $totalQuestions++; 
    if($question['Correct']){ 
     $correctAnswers++; 
     $points = $points = $weights[$question['Weight']; 
    } 
} 

ответ

0

Вы можете рассчитать сумму весов кандидат заработал (то есть точки у вас есть), а затем возможно общий вес (то есть совершенный счет).

Затем вы можете разделить счет кандидата на общий балл:

Score = Кандидатов баллов/Общая оценка

Оттуда вы можете вычислить процент:

Процент = Оценка * 100

Используя код:

$totalQuestions=0; 
$totalWeights=0; 
$correctAnswers=0; 
$weightsEarned=0; 
foreach($questions as $question){ 
    $totalQuestions++; 
    $totalWeights+=$weights[$question['Weight']]; 
    if($question['Correct']){ 
     $correctAnswers++; 
     $weightsEarned += $weights[$question['Weight']]; 
    } 
} 

echo "Score Overview: "; 
echo "<br/>Weights Earned: " . $weightsEarned; 
echo "<br/>Correct Answers: " . $correctAnswers; 
echo "<br/>Total Weights Possible : " . $totalWeights; 
echo "<br/>Percentage Earned: " . ($weightsEarned/$totalWeights) * 100; 
0

Обычно средний (взвешенный или нет) представляет собой сумму вещей по сравнению с общими возможными вещами. Если он взвешен, это обычно означает, что каждая вещь не одна вещь, а на самом деле weightOfThing вещей.

Пример:

$totalQuestions = count($questions); //No need to increment 
$totalWeight = 0; //Could do a sum here but no need 
$weightedSum = 0; 
foreach($questions as $question){ 
    $totalWeight += isset($question["Weight"])?$question["Weight"]:0; //Assume a question with no weight has 0 weight, i.e., doesn't count. Adjust accordingly 
    if($question['Correct']){ 
     $weightedSum += isset($question["Weight"])?$question["Weight"]:0; 
    } 
} 
$weightedAverage = $weightedSum/$totalWeight; 
0

может быть оптимизирован, но здесь законченное уравнение:

$weights = array(
    0=>0, 
    1=>0, 
    2=>.05, 
    3=>.20, 
    4=>.25, 
    5=>.50, 
); 

$byWeight = array(); 
foreach($questions as $question){ 
    //$totalQuestions++; 
    $byWeight[$question['Weight']]['TotalNumberOfQuestionsForWeight']++; 
    if($question['Correct']){ 
     $byWeight[$question['Weight']]['CorrectAnswers']++; 
    } 
} 

$totalWeightsSum = 0; 
foreach($byWeight as $weight => $data){ 
    $totalWeightsSum = $totalWeightsSum + (($data['CorrectAnswers']/$data['TotalNumberOfQuestionsForWeight']) * $weights[$weight]); 
} 

echo '<pre>'.var_export($byWeight,1).'</pre>'; 
echo $totalWeightsSum/array_sum($weights); 
Смежные вопросы