# Constructing Vector{Distribution{Univariate, Continuous}} in Distributions.jl

**URL:** <https://discourse.julialang.org/t/constructing-vector-distribution-univariate-continuous-in-distributions-jl/124562>\
**Category:** New to Julia\
**Created:** [January 9, 2025, 3:35am UTC](https://discourse.julialang.org/t/constructing-vector-distribution-univariate-continuous-in-distributions-jl/124562 "2025-01-09T03:35:15Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![rand5](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rand5/32/867_2.png) [@rand5](https://discourse.julialang.org/u/rand5)\
**Post date:** [January 9, 2025, 3:35am UTC](https://discourse.julialang.org/t/constructing-vector-distribution-univariate-continuous-in-distributions-jl/124562/1 "2025-01-09T03:35:15Z")

</div>

I’m attempting to construct an array of probability distributions of a single type based on arrays of parameters, then combine it with one or more distributions of a different type, then use this to construct a MixtureModel, but I’m having trouble getting the types right. Any help would be greatly appreciated.

Here is a MWE:

```julia
D = Vector{Distribution{Univariate, Continuous}}[]
μs = [0., 1.]
σs = [1., 2.]
for k=1:length(μs)
    push!(D,Normal(μs[k],σs[k]))
end

push!(D,Gamma(2,3))

X = MixtureModel(D,[0.5, 0.2, 0.3])

```

```julia
MethodError: Cannot `convert` an object of type Normal{Float64} to an object of type Vector{Distribution{Univariate, Continuous}}

Closest candidates are:
  convert(::Type{Array{T, N}}, ::StaticArraysCore.SizedArray{S, T, N, N, Array{T, N}}) where {S, T, N}
   @ StaticArrays C:\Users\Monali\.julia\packages\StaticArrays\xEhFV\src\SizedArray.jl:88
  convert(::Type{Array{T, N}}, ::StaticArraysCore.SizedArray{S, T, N, M, TData} where {M, TData<:AbstractArray{T, M}}) where {T, S, N}
   @ StaticArrays C:\Users\Monali\.julia\packages\StaticArrays\xEhFV\src\SizedArray.jl:82
  convert(::Type{T}, ::T) where T
   @ Base Base.jl:84
  ...

Stacktrace:
 [1] push!(a::Vector{Vector{Distribution{Univariate, Continuous}}}, item::Normal{Float64})
   @ Base .\array.jl:1118
 [2] top-level scope
   @ .\In[101]:5

```

It also seems unintuitive to me that the following would be false:

```julia
a = [Normal(2,2), Gamma(2,2)]
b = typeof(a)[]
typeof(b)==typeof(a)

```

---

<div class="post-metadata">

**Author:** ![rand5](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rand5/32/867_2.png) [@rand5](https://discourse.julialang.org/u/rand5)\
**Post date:** [January 9, 2025, 3:43am UTC](https://discourse.julialang.org/t/constructing-vector-distribution-univariate-continuous-in-distributions-jl/124562/2 "2025-01-09T03:43:45Z")

</div>

Solved:

```julia
D = Vector{Distribution{Univariate, Continuous}}(undef,3)
μs = [0., 1.]
σs = [1., 2.]
for k=1:length(μs)
    D[k] = Normal(μs[k],σs[k])
end

D[3] =Gamma(2,3)

X = MixtureModel(D,[0.5, 0.2, 0.3])

```

---

<div class="post-metadata">

**Author:** ![Mattriks](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mattriks/32/351_2.png) [@Mattriks](https://discourse.julialang.org/u/Mattriks)\
**Post date:** [January 9, 2025, 3:49am UTC](https://discourse.julialang.org/t/constructing-vector-distribution-univariate-continuous-in-distributions-jl/124562/3 "2025-01-09T03:49:55Z")

</div>

or `D = Distribution{Univariate,Continuous}[]`. In this syntax, the type is the element type e.g. `Float64[]`
