2014-05-17 3 views
-1

J'ai un système de vote écrit en PHP où les utilisateurs peuvent voter à la hausse ou à la baisse. Pour encourager le vote à la hausse, je souhaite afficher un message à un utilisateur si son nombre de votes négatifs est supérieur à son nombre de votes positifs. Quelque chose comme:Algorithme de taux de vote pour favoriser le vote

S'il vous plaît envisager la mise au vote de plus pour encourager vos collègues utilisateurs

J'ai donc actuellement deux variables, $user_upvotes et $user_downvotes.

Voici les conditions pour l'algorithme:

  1. Le message est que Echoed si l'utilisateur a plus de 5 up-voix.
  2. Si l'utilisateur a voté en baisse de 60% de plus que le nombre de votes positifs, le message est renvoyé en écho.

Quel algorithme pourrais-je utiliser pour rendre ce calcul possible en utilisant PHP. La performance est essentielle étant donné que ma base d'utilisateurs est très élevée.

+0

Si vous stockez simplement le nombre de conversions ascendantes et descendantes de l'utilisateur avec cet utilisateur, quelle est la taille de votre base d'utilisateurs? –

+1

Cette question semble hors sujet car elle ne montre aucune tentative pour résoudre le problème. – wallyk

+0

Qu'avez-vous essayé? Si vous tapez votre algorithme dans le code, il deviendra quelque chose comme 'if ($ user_upvotes> 5 && $ user_downvotes> ($ user_upvotes + $ user_downvotes) * 0.6) {...}'. Est-ce que ça ne marche pas? Qu'est-ce que vous essayez de demander exactement? – CodeCaster

Répondre

2

Comme cela?

<?php 

if($user_upvotes > 5) 
{ 
    if($user_downvotes/$user_upvotes > 1.6) 
     echo 'Please consider up-voting more to encourage your fellow users'; 
} 

?> 
+0

Merci. En termes de performance, quel calcul est le plus rapide, le vôtre ou celui de Rudiger? –

+0

Celui-ci est légèrement plus rapide. Le calcul de Rudiger a deux calculs séparés en un (addition et multiplication), alors que celui-ci n'en a qu'un (division). Je pense que celui-ci est plus facile à lire et à comprendre aussi. –

+0

Je suis d'accord, je pense que celui-ci est mieux –

1

Quelque chose comme ça

if ($user_upvotes > 5) { 
    if (($user_upvotes + (0.6 * $user_upvotes)) < $user_downvotes) 
    echo "Please consider up-voting more to encourage your fellow users"; 
} 
+0

Merci. En termes de performance, quel calcul est le plus rapide, le vôtre ou celui de Victor? –

+0

@HenrikPetterson Victor's –