algorithm - 模拟 amazon.com 畅销书

标签 algorithm

我刚刚浏览了 amazon.com,引起我注意的一件有趣的事情是他们如何计算畅销书

我正在考虑编写一个示例程序来计算这个。我在想,假设我正在计算当月的畅销书,而不仅仅是计算单本书的销量并显示前 10 名。这没问题还是我遗漏了什么?

编辑

可能会发生一件更有趣的事情:假设一本具有 id1 的书在第一天售出了 10 本,但之后它就没有售出,但是具有 id2 的书正在销售定期出售 1 或 2 件。那么它将如何影响畅销书的计算。谢谢。

最佳答案

听起来不错。取决于您要如何定义它。

“畅销书”是售出的单位数。

如果您不想将其固定为一个月,另一种方法是使用一些分布函数(如平方衰减,t^2)并添加由分布函数加权的计数。 这样,即使您没有固定的时间窗口,您也可以同时查看新书和旧书。您的函数应如下所示:

for a_book in books:
    score = 0
    for a_sale in sales[a_book]:
        score += 1 / (days(now() - a_sale.time()) ** 2)  # pow 2

我想你明白了。您可以尝试不同的函数,例如 exp(days) 或不同的幂。试验一下,看看什么对您有意义。

关于algorithm - 模拟 amazon.com 畅销书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20267082/

相关文章:

c++ - 使用结构/遗传算法

c - 试图导致 "worse case"快速排序

algorithm - 最近的一对点蛮力;为什么是 O(n^2)?

java - 在Java中生成另一个整数范围倍数的随机整数

algorithm - 什么人工智能最适合学习一个领域

通过最多删除一个字符来检查回文的 JavaScript 算法 - 这种递归方法的时间复杂度

c++ - 查找对象 float 状态的优化方法

java - 分类调度作业

algorithm - 在 2^n 组合中找到最佳顺序

algorithm - 我们如何对各种算法进行分类?