Bonjour,
J'ai des tableaux sous la forme
Tableau1 = [ Valeur10, Valeur11, Valeur12, Valeur13 ... Valeur1N ]
Tableau2 = [ Valeur20, Valeur21, Valeur22, Valeur23 ... Valeur2N ]
...
Je souhaite trouver le tableau dont le cumul de valeurs est le plus élevé, mais pondéré par une note de répartition pour chaque indice du tableau.
Je cherche donc des fonctions de "note de meilleur total respectant également une répartition relativement égalitaire".
Pour le moment, je calcule la moyenne - écart_type.
Exemple:
$tableau1 = [6,6,6,0,0];
$tableau2 = [3,3,3,4,4];
En prenant en compte la moyenne
tableau1 = 3.6
tableau2 = 3.4
Tableau 1 a une meilleure moyenne.
En prenant en compte la moyenne - écart_type
tableau1 = 0.66061230866019
tableau2 = 2.9101020514434
Tableau 2 a une meilleure note (moyenne - écart_type).
Est-ce que d'autres fonctions similaires de note existent?
Merci d'avance.
Exemple (exécution ici)
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 function array_average ($t) { return array_sum($t)/sizeof ($t); } function note ($t) { return array_average ($t) - stats_standard_deviation ($t); } if (!function_exists('stats_standard_deviation')) { function stats_standard_deviation(array $a, $sample = false) { $n = count($a); if ($n === 0) {trigger_error("The array has zero elements", E_USER_WARNING); return false; } if ($sample && $n === 1) { trigger_error("The array has 1 element", E_USER_WARNING);return false;} $mean = array_sum($a) / $n; $carry = 0.0; foreach ($a as $val) { $d = ((double) $val) - $mean; $carry += $d * $d; }; if ($sample) {--$n;} return sqrt($carry / $n); } } $tableau1 = [6,6,6,0,0]; $tableau2 = [3,3,3,4,4]; echo "En prenant en compte la moyenne\n"; echo "tableau1 = ".array_average ($tableau1)."\n"; echo "tableau2 = ".array_average ($tableau2)."\n"; if (array_average ($tableau1)>array_average ($tableau2)) echo "tableau 1 a une meilleure moyenne."; else echo "tableau 2 a une meilleure moyenne."; echo "\n";echo "\n"; echo "En prenant en compte la moyenne - écart_type\n"; echo "tableau1 = ".note ($tableau1)."\n"; echo "tableau2 = ".note ($tableau2)."\n"; if (note ($tableau1)>note ($tableau2)) echo "tableau 1 a une meilleure note (moyenne-écart_type)."; else echo "tableau 2 a une meilleure note (moyenne - écart_type)."; echo "\n";
Partager