scipy.dist.rvs()的工作原理在文档中尚不清楚



我目前正在从自定义离散分布中采样,如:

discrete_dist = stats.rv_discrete(name='discrete_dist', values=(np.arrange(1,N), p))
samples = discrete_dist.rvs(size = m)

其中p是长度N的概率列表。

当我浏览文档时,我无法弄清楚计算的复杂性是什么,因为文档中关于rvs((函数的唯一说明如下:

def rvs(self, *args, **kwargs):
kwargs['discrete'] = True
return super().rvs(*args, **kwargs)

此处链接到文档。该功能是如何工作的?

奖金问题:有更快的方法吗?

具有显式values的离散分布的代码如下:https://github.com/scipy/scipy/blob/v1.7.1/scipy/stats/_distn_infrastructure.py#L3710

基本上,它是一个逆分布函数采样,它使用cdf的逆来变换(0,1(上的一致变量。

最新更新