如何在Julia中编写任意离散分布?

时间:2018-01-11 17:36:40

标签: julia

例如,以概率0.3返回1.0并以概率0.7返回1.1的分布。谢谢。

2 个答案:

答案 0 :(得分:6)

也许您不需要完整的分发类型,但只需从这样的分布中抽样就足够了吗?

如果是这种情况,那么最简单的方法是:

using StatsBase  # corrected a typo here

values = [1.0, 1.1]
probabilities = [0.3, 0.7]
w = Weights(probabilities)
sample(values, w) # sampling

如果你真的想要使用发行版,你现在可以得到的最接近的东西是:

using Distributions

values = [1.0, 1.1]
probabilities = [0.3, 0.7]

d = Categorical(probabilities)
values[rand(d)] # sampling

但会慢一些。

如果要在分发包类型系统之后定义自己的分发,最简单的方法是使用此代码https://github.com/JuliaStats/Distributions.jl/blob/master/src/univariate/discrete/categorical.jl并根据您的需要对其进行修改(但这将是我所说的一项重要工作)。

答案 1 :(得分:3)

目前还没有内置的方法,但您可以查看link)。