我希望能够生成一个整数随机数,其概率分布函数作为一个列表给出。 例如,如果 pdf=[3,2,1],那么我想要 rndWDist(pdf) 返回 0、1 和 2,它们的概率分别为 3/6、2/6 和 1/6。 因为在 random 模块中找不到相应的函数,所以我自己编写了该功能。
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
有没有更简单的方法来达到相同的结果?