# Distributions.jl extension

**URL:** <https://discourse.julialang.org/t/distributions-jl-extension/50501>\
**Category:** Statistics\
**Tags:** distributions\
**Created:** [November 20, 2020, 3:15pm UTC](https://discourse.julialang.org/t/distributions-jl-extension/50501 "2020-11-20T15:15:41Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![lrnv](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lrnv/32/19373_2.png) [@lrnv](https://discourse.julialang.org/u/lrnv)\
**Post date:** [November 20, 2020, 3:15pm UTC](https://discourse.julialang.org/t/distributions-jl-extension/50501/1 "2020-11-20T15:15:41Z")

</div>

Hi,

I’m trying to code an extension of the Distributions.jl to add my own distribution, a convolution of N gammas, for which there exists an efficient algorithm for exact pdf / cdf computations.

I wrote a bunch of code, and i’m now trying to test it. For the moment it complaints about

> MethodError: no method matching rand(::Random.\_GLOBAL\_RNG, ::Exponential{Float64})

Edit :

I get why, i was making a mistake in the way i implemented the RNG. The documentaiton is quite outdated, this [Implementing a custom Sampler in Distributions.jl - #2 by contradict](https://discourse.julialang.org/t/implementing-a-custom-sampler-in-distributions-jl/41066/2) solved it.

---

<div class="post-metadata">

**Author:** ![wulpuqu](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/wulpuqu/32/17640_2.png) [@wulpuqu](https://discourse.julialang.org/u/wulpuqu)\
**Post date:** [November 20, 2020, 3:33pm UTC](https://discourse.julialang.org/t/distributions-jl-extension/50501/2 "2020-11-20T15:33:47Z")

</div>

Just change `rand` into  
`Base.rand(rng::Distributions.AbstractRNG, s::UnivariateGammaConvolutionSampler) = sum(rand.(rng,s.samplers))`

```julia
julia> dist = UnivariateGammaConvolution([1,2],[1,2])
UnivariateGammaConvolution{Float64}(
α: [1.0, 2.0]
θ: [1.0, 2.0]
P: MoschopoulosParameters{Float64}(1.0, 4.0, [0.0, 0.5], [1.0], 3.0, [1.0])
)

julia> rand(dist)
4.209602393629504

```

---

<div class="post-metadata">

**Author:** ![lrnv](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lrnv/32/19373_2.png) [@lrnv](https://discourse.julialang.org/u/lrnv)\
**Post date:** [November 20, 2020, 3:34pm UTC](https://discourse.julialang.org/t/distributions-jl-extension/50501/3 "2020-11-20T15:34:16Z")

</div>

Yeah that works too ! We should update the documentation.
