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 循环遍历上述定义的函数,但该函数只运行一次,所有循环结果基本相同。我希望函数每次通过循环运行。有人可以告诉我为什么该函数只运行一次吗?
正如注释中所指出的,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。