给定股票数据,写一个搜索”最优”k的代码,使得股价在前连续k天上涨的情况下今天仍上涨的概率最大
时间: 2023-05-27 12:06:31 浏览: 171
首先,我们需要计算出每天的涨跌幅,然后可以用一个数组记录下来。假设涨跌幅数组为diff,那么diff[i]表示第i天的涨跌幅。
接下来,我们可以使用滑动窗口来计算连续k天的涨跌幅之和。具体来说,我们维护一个窗口,它的左边界是i-k,右边界是i-1,表示连续的k天的涨跌幅。窗口每向右移动一次,我们就可以计算出新的连续k天的涨跌幅之和。
假设这个涨跌幅之和为sum,我们还需要记录一个变量cnt,表示连续k天中有多少天的涨跌幅为正数。这样,我们就可以根据sum和cnt计算出在前连续k天上涨的情况下今天仍上涨的概率。
具体来说,我们可以计算出前k天涨跌幅为正数的天数为p,那么在这种情况下,今天仍上涨的概率为(cnt-p+1)/(k-p+1)。如果前k天涨跌幅为负数或者为0,那么今天仍上涨的概率为1。
最后,我们可以遍历所有的连续k天,计算出它们对应的概率,然后取最大值即可。
下面是代码实现:
```python
def search_best_k(stock_data, k):
n = len(stock_data)
diff = [0] * n
for i in range(1, n):
diff[i] = stock_data[i] - stock_data[i-1]
best_prob = 0
best_k = 0
for i in range(k, n):
sum = 0
cnt = 0
for j in range(i-k, i):
sum += diff[j]
if diff[j] > 0:
cnt += 1
if sum > 0:
p = cnt
q = k - cnt
if q == 0:
prob = 1
else:
prob = (cnt-p+1) / (k-p+1)
else:
prob = 1
if prob > best_prob:
best_prob = prob
best_k = i-k+1
return best_k
```
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)