计算每个更新值及其相应的随机值,然后绘制它们

时间:2016-04-15 17:08:25

标签: python arrays random matplotlib distribution

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中与其对应的值。 答案:     随机导入     #import matplotlib.pyplot as plt

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

1 个答案:

答案 0 :(得分:1)

你能详细说明你在这里想做什么吗?看来你正试图在a2的基础上选择一个值'?'包含在a1中,然后乘以a2 [指数?在a1]中用随机数表示它,产品在y轴上,随机数在x轴上。基于该假设,有几种选择。最明显的是使用index()方法,请看这个问题:Python: finding an element in an array。或者,如果'?'意味着也可以随机放置在a1中,然后随机找到a2的索引比使用这两个列表更简单。使用以下a2[random.ranint(0, len(a2)-1)]执行此操作。 (此处的文档:https://docs.python.org/2/library/random.html)此外,我不是pyplot的专家,但看起来您对plt.line(r,a3)的调用可能无法按照您的意愿运行。根据我的想法,您可能希望在循环的每次迭代中将r和a3附加到两个单独的列表(例如rlist,a3list),然后调用plt.plot(rlist, a3list)。最后,你的while循环没有错,但你似乎将它用作for循环,所以你也可以这样做(for i in range(0,10):