python - 从约束生成离散概率分布
问题描述
鉴于:
n-bit
整数上的离散概率分布,表示为ys
浮点数列表(即sum(ys) == 1
)- 一个参数
eps
,使得0 < eps < 0.5
我想在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)
。
在我看来,应该有一种方法可以生成这样一个同时满足两个约束条件的列表。我在这里错过了一些基本的东西吗?
解决方案
推荐阅读
- java - 如何在不导入任何包的情况下在 Java 中使用 Calendar 类?
- javascript - 使用 selenium 向下滚动 Div
- ruby-on-rails - Rails 关联不保存到数据库
- javascript - Safari 中的 IntersectionObserver API 不稳定
- php - 我可以通过 URL 参数值过滤自定义帖子类型项目吗?
- html - CSS - 无论视口大小如何,如何保持完整图像可见?
- python - 工作好几个小时后突然出现错误:调用 Python 对象时超出最大递归深度的递归错误
- android - obj\Debug\90\MonoAndroid,Version=v9.0.AssemblyAttributes.cs 在“Sources”参数中指定了多次
- c# - 为什么“System.Net.WebException:'底层连接已关闭:发送时发生意外错误。” 出现错误?
- python - 为什么我的 python 代码认为这个字符比另一个大?