小编Hoo*_*man的帖子

Python中给定PDF的随机数

我想生成一个整数随机数,其概率分布函数作为列表给出。例如,如果 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
Run Code Online (Sandbox Code Playgroud)

有没有更短的方法来达到相同的结果?

python random probability-density

4
推荐指数
1
解决办法
7107
查看次数

标签 统计

probability-density ×1

python ×1

random ×1