计算每个更新的值及其对应的随机数,然后绘制它们
Posted
技术标签:
【中文标题】计算每个更新的值及其对应的随机数,然后绘制它们【英文标题】:Calculate each updated value and its corresponding random and then graph them 【发布时间】:2016-08-07 18:37:14 【问题描述】: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】:您能详细说明您在这里要做什么吗?似乎您正试图根据“?”在 a2 中选择一个值。包含在 a1 中,然后乘以 a2[index of ?在 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):
)
【讨论】:
您似乎正试图根据“?”在 a2 中选择一个值。包含在 a1 中,然后乘以 a2[index of ?在 a1] 中由一个随机数绘制,并用 y 轴上的乘积和 x 轴上的随机数绘制它。 我想我明白了。但是,我可能会回来。我用过:for i, j in enumerate(a1): if j == '?': print(a2[i])
还没有在循环内尝试过
我更新了代码。我有一个无限循环。我该如何解决?
我认为你过于复杂了;您实际上是在为已经存在的函数编写代码。正如我上面所说,您可能只想使用 index() 函数:a2[a1.index('?')]
你能告诉我具体需要放在哪里吗,因为我不知道。以上是关于计算每个更新的值及其对应的随机数,然后绘制它们的主要内容,如果未能解决你的问题,请参考以下文章