请教一个java概率算法

题目:
有A、B、C、D、E五家美食餐馆需要推荐给用户,初始被推荐的概率依次为40%、30%、10%、15%、5%。
每次根据推荐概率随机推荐一家,推荐给用户的餐馆用户可以给其好评,也可以不给。

需求:通过多次推荐进行动态调整每家美食餐馆被推荐的概率,提高用户给好评次数多的餐馆被推荐的概率。

补充说明:
1,初始给出的概率是后台通过大数据得出的,但是实际上每个用户喜欢的不一样,所以每个用户客户端还需要通过长期对用户的操作(给好评)进行统计分析,调整概率。最终的目的是为了尽可能的推荐用户喜欢的餐馆;
2,在对用户行为统计的时候会受到当前概率的影响,比如推荐概率为40%的A餐馆出现的机会远大于概率为5%的E餐馆,所以简单的统计好评是不行的,需要将这种因素给排除掉。

阅读 4.7k
1 个回答

这是个开放性的问题。动态调整标准应尽量避免历史的影响,及时反映最新的客户认可度。不妨定义客户对餐馆的当前认可度为两次动态调整期间,该餐馆在推荐后获得好评的比率。动态调整推荐概率正比于当前认可度即可。

例如,本次动态调整时,5家餐馆距离上次调整的好评情况为:

  • A: 10/40(推荐了40次,获得好评10次)= 0.25

  • B: 20/30 = 0.67

  • C: 3/10 = 0.3

  • D: 10/15 = 0.67

  • E: 2/5 = 0.4

则调整后的推荐概率更新为:

  • A: 0.25 / (0.25 + 0.67 + 0.3 + 0.67 + 0.4) = 0.25 / 2.29 = 11%

  • B: 0.67 / 2.29 = 29%

  • C: 0.3 / 2.29 = 13%

  • D: 0.67 / 2.29 = 29%

  • E: 0.4 / 2.29 = 18%

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题