假设我有一个数字列表[1,2,3,...,100]。现在我想从列表中选择数字,其中每个数字被接受或拒绝,给定的概率为0< p< 1。然后将接受的号码存储在单独的列表中。我怎么能这样做?
主要问题是选择概率为p的数字。是否有内置功能?
p的值由用户给出。
答案 0 :(得分:1)
您可以使用random.random()和列表理解:
import random
l = [1,2,3,4,5,6,7,8,9]
k = [x for x in l if random.random() > 0.23] # supply user input value here as 0.23
print(l)
print(k)
输出:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[2, 3, 4, 5, 6, 7]
检查列表中的每个元素是否具有>的概率。 0.23留在名单中。
旁注:
random.choices()能够接受权重:
random.choices(population, weights=None, *, cum_weights=None, k=1)
但只有才能改变给定列表中的概率以绘制其中一个元素(绝对或相对权重是可能的) - 但这不适用于“独立”概率。