在Python中按权重随机选择对象
可能的重复问题:
随机加权选择
从一个有权重的列表中选择随机的k个元素
假设我有一组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 个回答
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]