【发布时间】:2015-05-19 15:27:45
【问题描述】:
我有一个这样的概率密度函数:
def p1(x):
return ( sin(x) ** (-0.75) ) / (4.32141 * (x ** (1/5)))
我想用这个pdf 拒绝[0; 1] 上的随机值。如何做随机值?
【问题讨论】:
-
从任意分布采样可以通过在 [0, 1] 中均匀采样然后使用累积密度函数的倒数来完成。如果您无法解析地计算此逆 cdf,则可以使用 pdf 的数值积分(例如使用梯形规则)并将值存储在列表中;然后你可以对你的 [0, 1] 样本进行二分搜索以找到你的 pdf 样本。
-
@FrancisColas,这是解决我的任务的典型方法。但是,当有 scipy 这么强大的工具时,我真的可以用经典的方式解决我的问题吗?
-
好吧,我不知道使用 numpy/scipy 的任何具体方式。但请注意,这只是为您提供解决方案提示的评论,其他人可能会发布更令人满意的答案。
-
@FrancisColas,无论如何,谢谢你。
-
@FrancisColas 最好将其与
quad集成,然后插入反函数。
标签: python python-3.x random scipy distribution