Hoe werkt dit eigenlijk?


PHP-code (wat het doet)


function bereken_cijfer($behaalde_punten, $max_punten, $norm_percentage, $voldoende_cijfer, $decimalen) {
 $norm = intval($norm_percentage) / 100;
 $voldoende_score = $max_punten * $norm;
 if ($behaalde_punten == $max_punten) {
  return 10.0;
 }
 if ($behaalde_punten >= $voldoende_score) {
  return round($voldoende_cijfer + (10 - $voldoende_cijfer) * (($behaalde_punten - $voldoende_score) / ($max_punten - $voldoende_score)), $decimalen);
 } else {
  return round(1 + ($voldoende_cijfer - 1) * ($behaalde_punten / $voldoende_score), $decimalen);
 }
}

       

Invoer


  • max_punten: Het totale aantal te behalen punten.
  • behaalde_punten: Het aantal punten dat je daadwerkelijk hebt behaald.
  • norm_percentage: Het percentage dat nodig is om een voldoende te halen.
  • voldoende_cijfer: Het laagste cijfer dat nog net voldoende is, zoals een zes.
  • decimalen: Het aantal decimalen dat je wilt zien in het eindcijfer.

Uitkomst


Een cijfer tussen de 1 en 10, afgerond op het aantal gekozen decimalen. Dus hopelijk een mooi resultaat!


Berekening


  1. Bepaal de norm:
    norm = norm_percentage / 100
    Dit percentage wordt een decimaal getal, bijvoorbeeld 75% wordt 0,75.
  2. Bepaal de voldoendescore:
    voldoende_score = max_punten * norm
    Dit is het aantal punten dat je moet behalen om een voldoende te halen.
  3. Als je alle punten hebt behaald, krijg je een 10:
    Als behaalde_punten == max_punten, dan is het cijfer 10.0
  4. Als je boven de norm zit, krijg je een hoger cijfer:
    cijfer = voldoende_cijfer + (10 - voldoende_cijfer) * (behaalde_punten - voldoende_score) / (max_punten - voldoende_score)
    Je score stijgt richting een 10 naarmate je meer punten haalt.
  5. Als je onder de norm zit, is het minder gunstig:
    cijfer = 1 + (voldoende_cijfer - 1) * behaalde_punten / voldoende_score
    Het cijfer daalt richting een één als je te weinig punten haalt.
  6. Rond het cijfer af op het aantal decimalen dat je hebt gekozen.

Samenvatting


  • Je krijgt een 10 als je alle punten hebt.
  • Als je boven de norm scoort, wordt het cijfer steeds beter tot een 10.
  • Als je onder de norm scoort, gaat het cijfer steeds omlaag tot een één.
  • Het eindcijfer wordt afgerond op het aantal decimalen dat je hebt opgegeven.

Broncode en licentie


Als je dit zelf wil doen, kun je de broncode downloaden. Let op, de code valt onder de GNU Affero GPL versie 3, dus houd je aan de licentie!


Ga terug