问题描述
在 Julia 中,我有一个形状值数组,我想对一个数组进行采样,该数组的值是根据我的形状数组的相应形状元素进行伽马分布的。我想要的是:
shapes = [1.1,0.5,10]
scale = 1
x = SampleGammaWithDifferentShapes(shapes,scale)
其中x[1]
是从形状=shapes[1]
的伽玛分布中采样的,而x[2]
是从形状=shape[2]
的伽玛分布中采样的,依此类推。
是否有内置函数允许您在一行中执行此操作,还是我必须为此定义自己的函数?这似乎应该是一个内置函数。
解决方法
在数组上广播任何函数的可能性使得没有必要添加特殊的数组版本的函数。你能用 1 个值来做吗?然后就广播。
using Distributions
shapes = [1.1,0.5,10.]
scale = 1
x = rand.(Gamma.(shapes,scale))
,
map 函数对此很有用。
using Random,Distributions
shapes = [1.1,10]
scale = 1
n_samples = 1
x = map(x -> rand(Gamma(x,scale),n_samples)[1],shapes)