作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我找不到 Python 中的内置函数来生成给定最小值和最大值的对数均匀分布(R 等价物是 here ),例如:loguni[n, exp(min), exp( max), base] 返回在 exp(min) 和 exp(max) 范围内均匀分布的 n log。
不过我找到的最接近的是 numpy.random.uniform
.
最佳答案
来自 http://ecolego.facilia.se/ecolego/show/Log-Uniform%20Distribution :
In a loguniform distribution, the logtransformed random variable is assumed to be uniformly distributed.
因此
logU(a, b) ~ exp(U(log(a), log(b))
因此,我们可以使用 numpy
创建一个对数均匀分布:
def loguniform(low=0, high=1, size=None):
return np.exp(np.random.uniform(low, high, size))
如果你想选择不同的基数,我们可以定义一个新的函数如下:
def lognuniform(low=0, high=1, size=None, base=np.e):
return np.power(base, np.random.uniform(low, high, size))
编辑:@joaoFaria's answer也是正确的。
def loguniform(low=0, high=1, size=None):
return scipy.stats.reciprocal(np.exp(low), np.exp(high)).rvs(size)
关于python - 如何在 Python 中生成日志均匀分布?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43977717/
我是一名优秀的程序员,十分优秀!