You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求点赞/点踩(Thumbs up/down)评分系统的数学算法及计算方案

嘿,我明白你想实现视频网站那种点赞/点踩的评分展示,之前用的 Thumbsup / Thumbsdown * 100 确实会出现超过100%的问题——因为这个公式算的是点赞数相对于点踩数的倍数,不是用户感知里的“好评率”之类的评分。下面给你几种常用的数学方案和算法,都是行业里广泛用的:

1. 点赞率(最直观的通用方案)

这是视频、内容平台最常用的方案,核心是计算点赞数在总票数中的占比,结果范围是0-100%,完全符合用户对“好评比例”的认知。

公式:

(点赞数 / (点赞数 + 点踩数)) * 100

如果总票数为0(还没人投票),可以返回0或者显示“暂无评分”。

示例:

6赞2踩的情况:(6 / (6+2)) * 100 = 75%,也就是75%的用户给了好评,这个结果就很合理了。

适用场景:

  • 只想展示用户对内容的支持比例
  • 配合进度条展示(比如绿色进度条占75%,红色占25%,直观体现赞踩分布)

代码实现(JavaScript):

function getLikePercentage(likes, dislikes) {
  const totalVotes = likes + dislikes;
  if (totalVotes === 0) return 0; // 避免除以0
  return Math.round((likes / totalVotes) * 100);
}
2. 净评分(体现整体偏向)

如果想突出内容的“受欢迎程度差值”,可以用净评分,核心是计算点赞和点踩的差值,也可以归一化到-100到100的范围。

两种形式:

  • 原始差值:点赞数 - 点踩数,比如6赞2踩就是6-2=4,直接显示+4
  • 归一化差值:((点赞数 - 点踩数) / max(点赞数 + 点踩数, 1)) * 100,示例结果是(6-2)/8*100=50%,范围-100到100,正数代表偏向点赞,负数偏向点踩

适用场景:

  • 想快速展示内容的整体口碑偏向
  • 类似豆瓣“有用/没用”的展示逻辑
3. Wilson得分区间(专业排序/置信度场景)

如果你的场景需要根据评分排序内容(比如问答社区、内容推荐),上面两种方案有个问题:比如一个新内容有1赞0踩(100%点赞率),会比一个有100赞1踩(99%点赞率)的内容得分更高,但后者的样本量更大,可信度更高。Wilson得分就是解决这个问题的,它会计算置信区间的下限,兼顾点赞率和样本量。

公式:

p = 点赞数 / 总票数
n = 总票数
z = 置信水平对应的z值(95%置信度用1.96,90%用1.645)

Wilson得分 = (p + z²/(2n) - z * sqrt((p*(1-p) + z²/(4n))/n)) / (1 + z²/n)

示例:

  • 1赞0踩:p=1,n=1,z=1.96,计算得分为≈0.300
  • 100赞1踩:p≈0.9901,n=101,计算得分为≈0.966

显然后者得分更高,更适合排在前面。

适用场景:

  • 内容排序、推荐系统
  • 需要避免小样本极端值干扰的场景

代码实现(JavaScript):

function calculateWilsonScore(likes, dislikes, confidence = 0.95) {
  const totalVotes = likes + dislikes;
  if (totalVotes === 0) return 0;
  
  const p = likes / totalVotes;
  const z = confidence === 0.95 ? 1.96 : 1.645; // 对应不同置信度
  
  const denominator = 1 + (z * z) / totalVotes;
  const numerator = p + (z * z) / (2 * totalVotes) - z * Math.sqrt((p * (1 - p) + (z * z) / (4 * totalVotes)) / totalVotes);
  
  return numerator / denominator;
}
展示形式建议

针对你想要的「点赞按钮 | 评分展示区 | 点踩按钮」布局:

  • 如果用点赞率:展示区可以放75% 好评,或者配合横向进度条(绿色段占比=点赞率,红色段=100%-点赞率)
  • 如果用净评分:展示区放+4或者50%
  • 如果是排序场景:Wilson得分不需要直接展示给用户,只用来后台排序即可

内容的提问来源于stack exchange,提问作者Pixel Dsign

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:31:04