如何查看numpy.random.exponential的源代码



我想看看numpy.random.exponential是否使用F^{-1} (U)方法实现,其中F为指数分布的c.d.f, U为均匀分布。

我尝试numpy.source(random.exponential),但返回'此对象不可用'。这是否意味着这个函数不是用Python编写的?

我也尝试了inspect.getsource(random.exponential),但返回了一个错误,说它不是模块,函数等

numpy的源代码在github上,所以你可以使用github的源代码搜索。

通常,库的这些部分不是用纯python实现的。

python部分(关于你的问题)在这里:

更相关的代码部分来自distribution .c:

double rk_standard_exponential(rk_state *state)
{
    /* We use -log(1-U) since U is [0, 1) */
    return -log(1.0 - rk_double(state));
}
double rk_exponential(rk_state *state, double scale)
{
    return scale * rk_standard_exponential(state);
}

很多numpy函数都是用C/c++和Fortran编写的。numpy.source()只返回用Python编写的对象的源代码。它写在NumPy网站上。

你可以在它们的GitHub页面上找到所有的NumPy函数。你需要的一个是用c写的,这里是文件的链接。

最新更新