Я пытаюсь найти алгоритм, который выбирает 12 элементов из списка 25 в соответствии с вероятностью каждого из них. Эти элементы не могут повторяться.
Я пробовал использовать функцию без замены, но не могу заставить ее сохранять веса после 1000 итераций. чтобы проверить правильность выполнения. Мне это удалось, только если я использую функцию с replace = True.
Поскольку эта функция возвращает мне повторяющиеся элементы, я очищаю список, удаляя дубликаты. При этом вероятность того, что я получу каждое число, будет отличаться от той, которую я определил вначале. Я знаю, что ошибка здесь и что мне следует использовать функцию с replace = False, но я не могу заставить ее дать мне результат.
Я пытаюсь найти алгоритм, который выбирает 12 элементов из списка 25 в соответствии с вероятностью каждого из них. [b]Эти элементы не могут повторяться[/b]. Я пробовал использовать функцию без замены, но не могу заставить ее сохранять веса после 1000 итераций. чтобы проверить правильность выполнения. Мне это удалось, только если я использую функцию с replace = True. Поскольку эта функция возвращает мне повторяющиеся элементы, я очищаю список, удаляя дубликаты. При этом вероятность того, что я получу каждое число, будет отличаться от той, которую я определил вначале. Я знаю, что ошибка здесь и что мне следует использовать функцию с replace = False, но я не могу заставить ее дать мне результат. [code]import numpy as np from collections import Counter
for i in range(1000): sampleNames += np.random.choice(nameList, 100,replace=True, p=probability_nameList) for item in sampleNames: if not item in cleaned_result: cleaned_result += [item] sampleNames =[] test_list += cleaned_result[0:12] cleaned_result = []
print(Counter(test_list))
[/code] Ответ: [code]Counter({'AAAAAA': 832, 'F': 522, 'X': 513, 'ZZZZZZZZZZZZZZZZ': 506, 'I': 505, 'L': 504, 'N': 501, 'S': 499, 'T': 498, 'U': 496, 'R': 492, 'O': 491, 'J': 489, 'P': 488, 'E': 487, 'V': 485, 'K': 482, 'Q': 479, 'H': 473, 'G': 471, 'M': 468, 'W': 461, 'D': 404, 'C': 297, 'B': 157}) [/code] Как видите, AAAAA должно быть в 10 раз больше, чем B, но этого не происходит. P(AAAAA)= 10xP(B)