【发布时间】:2018-01-11 17:36:40
【问题描述】:
例如,以概率 0.3 返回 1.0 并以概率 0.7 返回 1.1 的分布。谢谢你。
【问题讨论】:
-
您可以简单地使用 Julia 的
rand()来实现这一点。像myDist() = ifelse(rand() < 0.3, 1.0, 1.1)这样的东西应该可以工作。当然你可以泛化函数来接受不同的值和不同的概率。
标签: julia
例如,以概率 0.3 返回 1.0 并以概率 0.7 返回 1.1 的分布。谢谢你。
【问题讨论】:
rand() 来实现这一点。像myDist() = ifelse(rand() < 0.3, 1.0, 1.1) 这样的东西应该可以工作。当然你可以泛化函数来接受不同的值和不同的概率。
标签: julia
也许您不需要完整的分布类型,但只需从这样的分布中采样就足够了?
如果是这种情况,那么最简单的方法是:
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 并根据您的需要对其进行修改(但我会说这将是一项重大的努力)。
【讨论】:
目前还没有内置的方法可以做到这一点,但您可以查看https://github.com/JuliaStats/Distributions.jl/pull/634)。
【讨论】:
DiscreteNonParametric。