算法 - 根据帖子和评论的数量计算用户评级

时间:2013-05-24 23:33:30

标签: php algorithm variables

我正在开发一个小型PHP脚本,用于计算发布平台中用户的比例。

应该使用我准备好的这两个变量来计算这个比率:

$user_comment_count =用户的总评论数

$user_post_count =用户的文章总数。

为了保持稳定的比例,用户每篇文章需要2条评论。因此,如果用户发布了5篇文章和10条评论,则用户的比例为1.00。如果有5个帖子和15个评论,那么1.50。用户可以拥有的最低比率是0.00,并且应该没有设置最高限制。

如何使用这两个变量在PHP中进行此计算?

2 个答案:

答案 0 :(得分:3)

最明显的解决方案:

$ratio = ($user_comment_count)/(2*$user_post_count);

更深入思考:

[1] 好吧,你可能想要奖励发帖和评论。 因此,该比率需要随着计数和评论计数单调上升。 因此,上述解决方案并不令人满意。

[2]您希望用户每个帖子都有至少 2个评论,否则用户将受到惩罚。

所以新的解决方案将是:

function base_score($user_post_count, $user_comment_count) {
    return $alpha*$user_post_count + $beta*$user_comment_count;
}

function score($user_post_count, $user_comment_count) {
    if (($user_comment_count >= 2*$user_post_count) || ($user_post_count = 0)) {
        return base_score($user_post_count, $user_comment_count);
    }else {
        $deficit = $user_comment_count / (2.0*$user_post_count);
        return base_score($user_post_count, $user_comment_count)*$deficit;
    }
}

$user_comment_count失踪的2*$user_post_count越多,实际得分就越低。

$alpha$beta分别是帖子计数和评论计数的重要因素。受制于:

0 <= alpha, beta

答案 1 :(得分:2)

$ratio = $user_comment_count / max(1, $user_post_count * 2);

虽然第一种解决方案可能更具可读性,但这也有效:

$ratio = $user_comment_count / ($user_post_count * 2 || 1);