可能重复:
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)
我该怎么办?谢谢。
答案 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]