我试图设计一种算法来计算商品价格波动的波动性。
我希望这样做的方式是,如果一种商品的价格不断地上升和下降,它应该比商品的价格逐渐上升,然后迅速下降有更高的分数。
以下是我的意思的一个例子:
商品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。商品价格越是波动模式,它的排名应该越高。
有什么算法可以做到这一点的建议吗?
谢谢!
最佳答案
我的方法是这样的。
对于我的算法,我正在考虑上面的例子。
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
希望这有帮助!
关于algorithm - 计算商品价格波动的算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46097050/