Как перебрать случайную функцию несколько раз? - PullRequest
0 голосов
/ 08 апреля 2019
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

OUTPUT:

[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 голосов
/ 02 мая 2019

Как отмечалось в комментариях, подсписки в 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.

...