importjava.io.Serializable;importjava.lang.ref.ReferenceQueue;importjava.lang.ref.WeakReference;importjava.math.BigDecimal;importjava.math.RoundingMode;/*** 商品评价算法

*

* @project icomment

* @fileName ProductScore.java

* @Description

*@authorlight-zhang

* @date 2018年1月15日下午4:44:40

*@version1.0.0*/

public abstract class CommentUtils implementsSerializable {private static final long serialVersionUID = 8143504152635422263L;/*************************** 方案一 *******************************************/

private static final double baby_ratio = 0.837;//宝贝评价计算占比(0.837/千)

private static final double merchant_ratio = 0.113;//卖家态度计算占比(0.113/千)

private static final double logistics_ratio = 0.0278;//物流评价计算占比(0.0278/万)

private static final double aplatfrom_ration = 0.0037;//平台影响分A(0.0037/万)

private static final double bplatfrom_ration = 0.0185; //平台影响分B (0.0185/万)

private static final double basic_score = 4.7463;//最高分

/**************************************************************************/

/*** 方案一 宝贝占比较高,防止卖假货 宝贝评价 0.837(千分比) 5 卖家态度 0.113(千分比) 4 物流服务 0.0278(万分比) 3 平台影响

* 0.0037(万分比) 2 平台影响 0.0185(万分比) 1

*

*@return

*/

public static BigDecimal babyScore(int baby, int merchant, intlogistics) {double value = baby * baby_ratio + (merchant - 1) * merchant_ratio + (logistics - 2) *logistics_ratio+ (2 * aplatfrom_ration) + (1 *bplatfrom_ration);final BigDecimal result = getTemp(newBigDecimal(value));if (result.doubleValue() ==basic_score) {return result.setScale(0, RoundingMode.HALF_UP);

}return result.setScale(1, RoundingMode.HALF_UP);

}/**************************

* 方案二

************************************************/

private static final double syn_baby_ratio = 0.35;private static final double syn_merchant_ratio = 0.25;private static final double syn_logistics_ratio = 0.35;private static final double syn_aplatfrom_ration = 0.3;private static final double syn_bplatfrom_ration = 0.2;private static final double syn_basic_score = 4.6;/**************************************************************************/

/*** 综合占比率

*@parambaby

*@parammerchant

*@paramlogistics

*@return

*/

public static BigDecimal synthetical(int baby, int merchant, intlogistics) {double value = baby * syn_baby_ratio + (merchant - 1) *syn_merchant_ratio+ (logistics - 2) * syn_logistics_ratio + 2 * syn_aplatfrom_ration + 1 *syn_bplatfrom_ration;final BigDecimal result = getTemp(newBigDecimal(value));if (result.doubleValue() ==syn_basic_score) {return result.setScale(0, RoundingMode.HALF_UP);

}return result.setScale(1, RoundingMode.HALF_UP);

}/*** 宝贝梯度 梯度 0失望 1不满意 2一般 3满意 4惊喜 默认返回3满意

*

*@paramavgf

*@return

*/

public static int grads(doubleavgf) {return (avgf <= 1.5) ? 0: (avgf> 1.5 && avgf <= 2.3) ? 1: (avgf> 2.3 && avgf <= 3.1) ? 2: (avgf> 3.1 && avgf <= 4.0) ? 3 : (avgf > 4.0 && avgf <= 5.0) ? 4 : 3;

}private static T getTemp(T classOfType) {

ReferenceQueue queue = new ReferenceQueue();

WeakReference weakRef = new WeakReference(classOfType, queue);if (null ==weakRef.get()) {

weakRef= new WeakReference(classOfType);

}returnweakRef.get();

}public static voidmain(String[] args) {int baby = 2;int merchant = 2;int logistics = 5;

System.out.println("评测1 " + babyScore(baby, merchant, logistics));//方案一 防止卖假货采用方案

System.out.println("梯度1 >>>>> " +grads(babyScore(baby, merchant, logistics).doubleValue()));

System.out.println("评测2 " + synthetical(baby, merchant, logistics));//方案二 综合商家,宝贝,物流采用方案

System.out.println("梯度2 >>>>> " +grads(synthetical(baby, merchant, logistics).doubleValue()));

}

}

java 商品评价_java 商品评价计算算法相关推荐

  1. java数据结构 队列_Java数据结构与算法[原创]——队列

    声明:码字不易,转载请注明出处,欢迎文章下方讨论交流. 前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督.本文介绍数据结构中的队列(queue)的概念.存储结构.队列的特点,文末给出ja ...

  2. java 性能 排序_Java常用排序算法及性能测试集合

    package algorithm.sort; import java.lang.reflect.Method; import java.util.Arrays; import java.util.D ...

  3. java setlt;intgt;_java使用Nagao算法实现新词发现、热门词的挖掘

    采用Nagao算法统计各个子字符串的频次,然后基于这些频次统计每个字符串的词频.左右邻个数.左右熵.交互信息(内部凝聚度). 名词解释: Nagao算法:一种快速的统计文本里所有子字符串频次的算法.详 ...

  4. java遍历字符串_Java后端开发算法基础面试题分享,你离大厂也许就差这份面试题

    一.算法基础 1. 重建二叉树 题目: 输入一棵二叉树前序遍历和中序遍历的结果,请重建该二叉树. 注意: 二叉树中每个节点的值都互不相同: 输入的前序遍历和中序遍历一定合法: 演示: 给定: 前序遍历 ...

  5. java加减法验证码_Java,Springboot 实现算法验证码加减法图形验证码,Kaptcha 实现加减法验证码...

    最近在做一个加减法验证码,记录下实现的过程. 通常Java实现验证码的工具会用到 kaptcha 这个工具包,但实现的验证码都是图形验证码,没有看到加法验证码,查询了相关资料,实现了加减法验证码,效果 ...

  6. bom展开算法 java程序实现_java实现aprior算法

    /** * 频繁项集 */ public class FrequentNode { //包含哪些项 private String[] subjects; //几项集 private int k; // ...

  7. Java基础类冒泡排序_Java基础 -- 冒泡排序算法(带详细注释)

    冒泡排序的要点: 1.多轮排序,每轮排序中选出最大的元素放在最顶端,并且下次排序不再使用该元素; 2. 使用双for循环,外层for循环控制要排序的次数(轮数), 内层for循环控制当前要排序的元素并 ...

  8. java sha256 实现_Java实现SHA256算法

    import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.securit ...

  9. java 数据结构 无向图_Java数据结构和算法(十五)——无权无向图

    前面我们介绍了树这种数据结构,树是由n(n>0)个有限节点通过连接它们的边组成一个具有层次关系的集合,把它叫做"树"是因为它看起来像一棵倒挂的树,包括二叉树.红黑树.2-3- ...

最新文章

  1. 计算机桌面文件管理窗口,隐藏Win10此电脑窗口的6个额外文件夹
  2. java中怎么固定间距_java中的GridBagLayout是怎么调组件间距的...
  3. 详解/etc/fstab文件内容
  4. WIN7无法记住远程登录密码
  5. apache ii评分和死亡率_高大上的风险分层系统:APACHE评分到底是啥?
  6. Fbric、Ansible、Docker、Chaos Monkey:DevOps工具的年中回顾
  7. 数据科学竞赛-房价预测
  8. 四面阿里,看看你都会吗
  9. 为什么离开学校后,学习能力直线下降?
  10. webservie报文格式
  11. Facebook将偷来的3D对象数据库用于其AI项目:被诉讼
  12. 电脑不香吗?我在手机上装Python我图什么?
  13. 达芬奇DaVinci Resolve Studio Mac v17.4.6
  14. 【skimage.util.shape】有关view_as_windows裁剪数组及恢复的简单尝试
  15. 8uFTP连不上阿里云,4步解决8uFTP连不上阿里云问题
  16. h3c交换机重启_h3c交换机常用命令
  17. Ubuntu 20.04(Linux Mint XFCE 20)安装LBP2900打印机
  18. centos 6.8 请教笔记本上的虚拟机如何配置无线网络 桥接联网
  19. BERT-MRC:统一化MRC框架提升NER任务效果
  20. 图像恢复 SWinIR : 彻底理解论文和源代码 (注释详尽)

热门文章

  1. web应用F12查看报错(前后端bug判断、2XX/3XX/4XX/5XX常见状态码解析)
  2. android 9平板电脑截屏,平板电脑怎么截图 平板电脑截图方法【详解】
  3. 08.GPIO基础知识和工作原理
  4. 画家唐小唐:中国水墨画的传承者与创新者
  5. (含Matlab源码)算术编码(arithmetic coding)的underflow问题
  6. 黑马程序员--技术网站网址2
  7. 第一次做bom工作心得
  8. vi,vim文本编辑器
  9. 关于深信服面试的经历反省
  10. html绘制直角坐标系,几何画板如何画直角坐标系并描点