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

在Python中随机选择具有加权概率的对象,python,Python,可能的重复项: 假设我有一组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] w

可能的重复项:

假设我有一组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)

我该怎么做这样的事?谢谢。

您可以使用这样的代码称量物品,只需将它们多次添加到不同的集合中即可

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]

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

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]

我看了一下这个问题,并将修改这个问题,使之不同,因为有未知数量的对象可以开始。当我实现类似的东西时,我发现这篇文章有趣而有用:这似乎是答案:我看了这个问题,我将对这篇文章进行修改,使其与众不同,因为一开始有未知数量的对象。当我实现类似的东西时,我发现这篇文章有趣且有用:这似乎是答案:感谢您的回复。一旦我有了加权集,从中选择一个对象(例如,random.sample)的语法/方法是什么?谢谢你的回答。一旦我有了加权集,从中选择对象的语法/方法是什么(例如,random.sample)?