From 8e07578d7ccf48c49abb13878b33a9129b20530f Mon Sep 17 00:00:00 2001
From: Eliah REBSTOCK <eliah.rebstock@ensiie.fr>
Date: Fri, 1 Apr 2016 19:00:12 +0000
Subject: [PATCH] fonction de classement ELO

---
 ELO_function.php | 66 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 66 insertions(+)
 create mode 100644 ELO_function.php

diff --git a/ELO_function.php b/ELO_function.php
new file mode 100644
index 0000000..98cdbfa
--- /dev/null
+++ b/ELO_function.php
@@ -0,0 +1,66 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: phoenix
+ * Date: 01/04/16
+ * Time: 18:32
+ *
+ */
+
+/* @param $tab array
+ * @param $j int
+ * @requires $j >= 0 and $j < count($tab)
+ * @returns float
+ * Renvoie la moyenne du tableau en passant l'indice $j
+ */
+
+function avg_skip($tab, $j)
+{
+
+    $i = 0;
+    $s = 0;
+    while ($i < count($tab))
+    {
+        if ($i != $j)
+        {
+            $s = $s + $tab[$i];
+        }
+        $i++;
+    }
+
+    return $s/(count($tab)-1);
+}
+
+
+/* @param $scores_actuel array
+ * @param $scores_obtenus array
+ * @param $K int (Coefficient multiplicatif propre au jeu, plus il est élevé, plus le résultat est fin)
+ * @param $D int (nombre de points pour qu'un joueur soit 10x plus fort qu'un autre)
+ * @return int
+ *
+ * @requires count($scores_actuel) == count($scores_obtenus)
+ * @requires $K >= 1 and $D > 1
+ *
+ * Renvoie le nombre de points obtenus (ou perdus, dans ce cas c'est négatif) dans un tableau
+ * correspondant aux indices de $scores_obtenus.
+ *
+ */
+function ELO($scores_actuel, $scores_obtenus, $K, $D)
+{
+
+    $newS = array();
+    $c = max($scores_obtenus)-min($scores_obtenus);
+    $d = min($scores_obtenus);
+    $j = 0;
+    foreach ($scores_actuel as $A)
+    {
+        $m = avg_skip($scores_actuel, $j);
+        $EA = 1/(1+10^(($m-$A)/$D));
+        $EA = $c * $EA - $d;
+        $newS[$j] = floor($K * ($scores_actuel[$j]-$EA));
+        $j++;
+    }
+
+    return $newS;
+
+}
\ No newline at end of file
-- 
GitLab