关于python:计算每个更新的值及其对应的随机值,然后将它们绘制成图表

Calculate each updated value and its corresponding random and then graph them

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import random
#import matplotlib.pyplot as plt

a1 = ['','','?','']
a2 = [10,25,43.34,90]

i = 0
i_array = []
while i < 10:
    i_array.append(i)
    i = i + 1
    r = random.random()
    for i, j in enumerate(a1):
        if j == '?':
            print(a2[i]*r)
            a3 = a2[i]*r

plt.line(r,a3)

我在A1中的问号可以在这四个位置中的任何位置。因此,A2中对应的值需要改变。答案是:随机进口#将matplotlib.pyplot导入为plt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
a1 = ['','','?','']
a2 = [10,25,43.34,90]
xarray=[]
yarray=[]
i = 0
i_array = []#probably can delete this, I don't see any reason for it
for i in range(0,10):#use a for loop instead
    i_array.append(i)
    r = random.random()
    a3 = a2[a1.index('?')]*r#index here instead of the for loop
    print(a3)#since your assigning a3 anyway, might as well print that
    xarray.append(r)#plot needs arrays
    yarray.append(a3)
plt.plot(xarray,yarray)#plot your arrays

你能详细说明一下你想在这里做什么吗?似乎您正在尝试根据"?"的位置选择A2中的值。包含在a1中,然后乘以a2[索引为?在a1]中,用一个随机数,并用y轴上的乘积和x轴上的随机数绘制图表。基于这个假设,有几种选择。最明显的是使用index()方法,请参见以下问题:python:在数组中查找元素。或者,如果"?"也就是说随机放在a1中,那么随机查找a2的索引比使用两个列表更简单。使用以下a2[random.ranint(0, len(a2)-1)]进行此操作。(这里的文档:https://docs.python.org/2/library/random.html)另外,我不是Pyplot的专家,但看起来您对plt.line(r,a3)的调用可能不会像您希望的那样工作。根据我想您要做的,您可能希望在循环的每个迭代中将r和a3附加到两个单独的列表(例如r list、a3 list),然后调用plt.plot(rlist, a3list)。最后,虽然while循环没有错,但您似乎将其用作for循环,因此您也可以这样做(for i in range(0,10):)