diff --git a/src/univariate/discrete/binomial.jl b/src/univariate/discrete/binomial.jl index c83683b733..4214807528 100644 --- a/src/univariate/discrete/binomial.jl +++ b/src/univariate/discrete/binomial.jl @@ -73,15 +73,8 @@ function mode(d::Binomial{T}) where T<:Real end modes(d::Binomial) = Int[mode(d)] -function median(d::Binomial) - round_down_mean = floor(Int,mean(d)) - if cdf(d,round_down) < 0.5 - round_down_mean+1 - else - round_down_mean - end -end - +# `median` falls back to quantile-based definition + function skewness(d::Binomial) n, p1 = params(d) p0 = 1 - p1 diff --git a/test/univariate/discrete/binomial.jl b/test/univariate/discrete/binomial.jl index 0caa974216..b3580c3961 100644 --- a/test/univariate/discrete/binomial.jl +++ b/test/univariate/discrete/binomial.jl @@ -26,6 +26,13 @@ end @test Distributions.expectation(identity, Binomial(6)) ≈ 3.0 @test Distributions.expectation(x -> -x, Binomial(10, 0.2)) ≈ -2.0 +# Test median +@test Distributions.median(Binomial(5,3//10)) == 1 +@test Distributions.median(Binomial(25,3//10)) == 7 +@test Distributions.median(Binomial(45,3//10)) == 13 +@test Distributions.median(Binomial(65,3//10)) == 19 +@test Distributions.median(Binomial(85,3//10)) == 25 + # Test mode @test Distributions.mode(Binomial(100, 0.4)) == 40 @test Distributions.mode(Binomial(1, 0.51)) == 1