如何多次遍历一个随机函数?

时间:2019-04-08 07:02:28

标签: python list function loops random

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循环遍历上面定义的函数,但是该函数只运行一次,并且所有循环结果基本相同。我希望函数每次通过循环运行。有人可以告诉我为什么该功能只运行一次吗?

1 个答案:

答案 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。