python:按照一定的概率从列表中选择元素

mel*_*mel 1 python random probability python-3.x

我正在寻找一个 python 函数,在给定列表和一定概率的情况下,它允许我仅返回“通过”彩票的元素。例如:

my_list = ['A', 'B', 'C']
my_probability = 0.66 # The probability for an element to stay in the list
winner = THE_RANDOM_FUNCTION(my_list, my_probability)
print(winner)
>> ['A', 'C'] # Could be a different result but that only an example
Run Code Online (Sandbox Code Playgroud)

因此,我希望该函数对列表中的每个元素进行抽奖(以给定的概率),如果通过抽奖,则将其保留在结果列表中。

标准库中有这样的函数还是我应该实现它?

Tom*_*ych 6

听起来你的意思是你想以给定的概率选择或不选择每个元素。这里有几个简单的解决方案:

filter(lambda x: random.random() < my_probability, my_list)

[x for x in my_list if random.random() < my_probability]
Run Code Online (Sandbox Code Playgroud)