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

最佳答案

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

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

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

但是会慢一些。

如果要在Distributions包类型系统之后定义自己的发行版,最简单的方法是采用此代码https://github.com/JuliaStats/Distributions.jl/blob/master/src/univariate/discrete/categorical.jl并根据需要进行修改(但这是我要付出的巨大努力)。

关于julia - 如何在Julia中编写任意离散分布?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48212909/

10-12 17:23
查看更多