首页 > 解决方案 > 从约束生成离散概率分布

问题描述

鉴于:

我想在n-bit整数上生成一个新的概率分布,xs,使得以下成立:

(1) (forall) i in range(0, 2**n): 
    (1 - eps) <= xs[i] / ys[i] <= (1 + eps)

(2) sum(xs) == 1

我的(天真)起点是这样的:

for i in range(2**n):
    xs[i] = uniform(ys[i] * (1 - eps), ys[i] * (1 + eps))

但显然sum(xs)可能不是1,归一化xs可能会破坏条件(1)


在我看来,应该有一种方法可以生成这样一个同时满足两个约束条件的列表。我在这里错过了一些基本的东西吗?

标签: pythonrandomprobability

解决方案


推荐阅读