ReactiveBayes / ExponentialFamily.jl

ExponentialFamily.jl is a Julia package that extends the functionality of Distributions.jl by providing a collection of exponential family distributions and customized implementations.
https://reactivebayes.github.io/ExponentialFamily.jl/
MIT License
12 stars 2 forks source link

`rand` is ambiguous for `ExponentialFamilyDistribution` structures #184

Closed Nimrais closed 7 months ago

Nimrais commented 7 months ago

However, the rand without specifying rng is working for other distribution types, particularly is ambiguous for ExponentialFamilyDistribution structures.

julia> using ExponentialFamily

julia> using BayesBase

julia> dist = MvNormalMeanPrecision([1], [2])
MvNormalMeanPrecision(
μ: [1.0]
Λ: [2.0;;]
)

julia> ef = convert(ExponentialFamilyDistribution, dist)
ExponentialFamily(MvNormalMeanCovariance)

julia> rand(dist, 1000)
1×1000 Matrix{Float64}:
 1.85574  0.796314  -0.512534  -0.179533  1.468  -0.853284  0.542753  2.63622  1.2452  …  0.45398  1.69912  1.98585  0.296288  0.408358  0.850633  1.15327  1.99466  0.923916

julia> rand(ef, 1000)
ERROR: MethodError: rand(::ExponentialFamilyDistribution{MvNormalMeanCovariance, Vector{Float64}, Nothing, Nothing}, ::Int64) is ambiguous.

Candidates:
  rand(ef::ExponentialFamilyDistribution, args...)
    @ ExponentialFamily ~/repos/biaslab/ExponentialFamily.jl/src/exponential_family.jl:872
  rand(X, d::Integer, dims::Integer...)
    @ Random ~/.julia/juliaup/julia-1.10.0+0.aarch64.apple.darwin14/share/julia/stdlib/v1.10/Random/src/Random.jl:285

Possible fix, define
  rand(::ExponentialFamilyDistribution, ::Integer, ::Vararg{Integer})

Stacktrace:
 [1] top-level scope
   @ REPL[7]:1