如何多次遍历随机函数


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。

最新更新