我想生成一个整数随机数,其概率分布函数以列表形式给出。例如,如果 pdf=[3,2,1] 那么我喜欢 rndWDist(pdf) 返回 0,1 和 2,概率分别为 3/6、2/6 和 1/6。我为此编写了自己的函数,因为我在随机模块中找不到它。
def randintWDist(pdf):
cdf=[]
for x in pdf:
if cdf:
cdf.append(cdf[-1]+x)
else:
cdf.append(x)
a=random.randint(1,cdf[-1])
i=0
while cdf[i]<a:
i=i+1
return i
有没有更短的方法来达到相同的结果?