Случайная выборка весов из списка в Python: объяснение различных методов

Чтобы случайным образом взвесить выборку из списка в Python, вы можете использовать различные методы. Вот несколько подходов:

Метод 1. Использование функции random.choicesс весами

import random
my_list = [1, 2, 3, 4, 5]
weights = [0.1, 0.3, 0.2, 0.2, 0.2]
sample = random.choices(my_list, weights, k=1)
print(sample)

Метод 2: использование функции numpy.random.choiceс вероятностями

import numpy as np
my_list = [1, 2, 3, 4, 5]
probabilities = [0.1, 0.3, 0.2, 0.2, 0.2]
sample = np.random.choice(my_list, size=1, p=probabilities)
print(sample)

Метод 3: использование функции random.choicesс совокупными весами

import random
my_list = [1, 2, 3, 4, 5]
weights = [0.1, 0.3, 0.2, 0.2, 0.2]
cumulative_weights = [sum(weights[:i+1]) for i in range(len(weights))]
rand_num = random.random()
sample = my_list[bisect.bisect(cumulative_weights, rand_num)]
print(sample)

Эти методы позволяют случайным образом взвешивать выборку из списка на основе заданных вероятностей или весов. Выберите метод, который лучше всего соответствует вашим потребностям.