我试图设计一个算法来计算一种商品的价格波动有多大。
我希望这样做的方法是,如果一种商品的价格不断上涨和下降,它的分数应该比商品的价格逐渐上涨,然后迅速下跌时高。
这里是我的意思的一个例子:
商品A: 1 -> 2 -> 3 -> 2 -> 1 -> 3 -> 4 -> 2 -> 1
商品B: 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 2
商品C: 1 -> 2-> 3 -> 4 -> 5 -> 4 -> 3 -> 2 -> 1
大宗商品A有一个“波动”的模式,它的价格上升和下降的基础上有规律。
商品B有一个“悬崖”的模式,价格逐渐上升,然后急剧下降。
商品C有一种“山”式的模式,即价格逐渐上涨,然后逐渐下降。
A应该得到最高的排名,其次是C,其次是B。商品价格跟随的波动模式越多,它应该拥有的排名就越高。
对算法有什么建议吗?
谢谢!
发布于 2017-09-07 15:57:21
我的方法是这样的。
对于我的算法,我正在考虑上面的例子。
A: 1 -> 2 -> 3 -> 2 -> 1 -> 3 -> 4 -> 2 -> 1
B: 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 2
C: 1 -> 2 -> 3 -> 4 -> 5 -> 4 -> 3 -> 2-> 1现在我将压缩这些列表,我的意思是取一个递增或递减序列的起始值和结束值。
所以,在压缩列表之后,会出现这样的情况。
A: 1 -> 3 -> 1 -> 4 -> 1
B: 1 -> 8 -> 2
C: 1 -> 5 -> 1当它完成后,我取i和i+1元素之间的差,然后取平均值,然后根据平均值给它们排序。
所以I元素和i+1元素之间的区别如下所示
2 2 3 3
A: 1 --> 3 --> 1 --> 4 --> 1
7 6
B: 1 --> 8 --> 2
4 4
C: 1 --> 5 --> 1现在让我们把这个差额加起来,取平均值。
A: (2+2+3+3)/4 = 2.5
B: (7+6)/2 = 6.5
C: (4+4)/2 = 4现在我们可以根据这个平均值来分配等级
A < C < B希望这能有所帮助!
https://stackoverflow.com/questions/46097050
复制相似问题