Code : Tout sélectionner
Je gère un système d'allocations de messages clients qui se veut équitable en fonction de l'ancienneté des employés.
Par exemple, Bob doit recevoir 14% des messages, Sam 21%, Tom 29% et John 36% (Bob étant le plus ancien, John le plus jeune).
Le seul moyen que j'ai trouvé jusqu'à maintenant est d'arrondir ces chiffres de manière à trouver un dénominateur le plus faible possible puis d'utiliser une fonction rand dans mon script php (ci-dessous). Par exemple ici, Bob recevra aléatoirement 2 tickets sur 14 (14,2%), Sam 3 tickets sur 14 (21,4%), Tom 4 tickets sur 14 (28,6%) et John 5 tickets sur 14 (35,7%).
Les problèmes étant que:
- le code est lourd (il est en réalité plus long que l'exemple ci-dessous)
- le système d'allocation n'est pas parfait et nécessite parfois des arrondis grossiers
- si nous souhaitons revoir les pourcentages d'allocation toutes les semaines ou tous les mois, c'est un vrai travail que de devoir trouver un dénominateur le plus faible possible et de remodifier le code.
Connaissez-vous une méthode qui me permettrait d'allouer un pourcentage de messages à chaque employé, plutôt qu'un système peu précis et complexe comme le mien ?
Merci d'avance,
[u][b]Code:[/b][/u]
[php]foreach ($messages->results as &$result) {
if (!$result->assignee_id) {
switch (rand(1,14)) {
case 1:
$assignee = "111"; // Bob
break;
case 2:
$assignee = "111"; // Bob
case 3:
$assignee = "112"; // Sam
break;
case 4:
$assignee = "112"; // Sam
break;
case 5:
$assignee = "112"; // Sam
break;
case 6:
$assignee = "113"; // Tom
break;
case 7:
$assignee = "113"; // Tom
break;
case 8:
$assignee = "113"; // Tom
break;
case 9:
$assignee = "113"; // Tom
break;
case 10:
$assignee = "114"; // John
break;
case 11:
$assignee = "114"; // John
break;
case 12:
$assignee = "114"; // John
break;
case 13:
$assignee = "114"; // John
break;
case 14:
$assignee = "114"; // John
break;
}[/php]