def a4():
p = []
for i in range(10):
p.append(random.sample(x, 100))
r = []
for i in p:
for j in i:
r.append(j)
return r
输出:
[0.5202486543583558, 0.5202486543583558, 0.5202486543583558, 0.5202486543583558, 0.5202486543583558]
a1000 = []
for i in range(5):
a4()
a1000.append(statistics.mean(a4()))
print(a1000)
我尝试使用上述for循环遍历上面定义的函数,但是该函数只运行一次,并且所有循环结果基本相同。我希望函数每次通过循环运行。有人可以告诉我为什么该功能只运行一次吗?
答案 0 :(得分:0)
正如注释中指出的那样,p
的定义中a4
的子列表具有完全相同的元素,只有这些元素的顺序改变的次数完全相同。
因此,a4
的每个新结果也是如此。这些是直到元素排列的相同列表。但是元素的顺序与mean
的计算无关(排列元素的总和始终相同)。因此,您总是得到相同的平均值。
但是,您可能想要实现的是某种引导机制。在这种情况下,您需要抽样替换。反过来,每次都会产生不同的结果。如果这是您想要的,请替换
p.append(random.sample(x, 100))
使用
p.append(random.choices(x, k=100))
我也考虑将numpy用于这些事情。了解有关numpy数组方法串联,展平的信息。还有numpy.random.sample和numpy.random.choice。