我刚刚浏览了 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/