在Python中随机选择具有加权概率的对象

时间:2011-06-21 19:00:56

标签: python

  

可能重复:
  Random weighted choice
  Select random k elements from a list whose elements have weights

假设我有一组N个对象,

set = range(a,b) = [a,a+1,...b-2, b-1]

要选择概率为1 / len(N)的M个对象,我可以这样做:

random.sample(set, M).

我希望能够以加权概率随机选择对象。例如,如果不是3或5的倍数,加权概率将为1.如果是3的倍数,加权概率将是3,如果是5的倍数,加权概率将是5,如果是15的倍数,加权概率将是15岁。

举例说明:

set = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
weighted_set=[(1, weight=1), (2, weight=1), (3, weight=3),(4, weight=1), (5, weight=5),...(15, weight=15)]
random.sample(weighted_set, N)

我该怎么办?谢谢。

1 个答案:

答案 0 :(得分:4)

您可以使用这样的代码来衡量项目,只需将它们多次添加到不同的集合中即可。

set = [1,2,3,4,5,6,7,8,9,10]
weight = 5
weighted_set = []
for i in set:  
    if i % 5 == 0:
        weighted_set += weight*[i]
    else:
        weighted_set += [i]