From e2fe7b25c78d9299dbb4149a588b361afed50635 Mon Sep 17 00:00:00 2001 From: harshkanhat Date: Wed, 28 Oct 2026 17:58:58 +0530 Subject: [PATCH 1/3] Fix binomial distribution overflow --- maths/binomial_distribution.py | 7 ++----- maths/test_binomial_distribution.py | 8 ++++++++ 2 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 maths/test_binomial_distribution.py diff --git a/maths/binomial_distribution.py b/maths/binomial_distribution.py index e29c8597a6e5..6b069461394e 100644 --- a/maths/binomial_distribution.py +++ b/maths/binomial_distribution.py @@ -1,8 +1,7 @@ """For more information about the Binomial Distribution - https://en.wikipedia.org/wiki/Binomial_distribution""" -from math import factorial - +from math import comb def binomial_distribution(successes: int, trials: int, prob: float) -> float: """ @@ -26,9 +25,7 @@ def binomial_distribution(successes: int, trials: int, prob: float) -> float: if not 0 < prob < 1: raise ValueError("prob has to be in range of 1 - 0") probability = (prob**successes) * ((1 - prob) ** (trials - successes)) - # Calculate the binomial coefficient: n! / k!(n-k)! - coefficient = float(factorial(trials)) - coefficient /= factorial(successes) * factorial(trials - successes) + coefficient = comb(trials, successes) return probability * coefficient diff --git a/maths/test_binomial_distribution.py b/maths/test_binomial_distribution.py new file mode 100644 index 000000000000..4330c4286fce --- /dev/null +++ b/maths/test_binomial_distribution.py @@ -0,0 +1,8 @@ + +import pytest +from maths.binomial_distribution import binomial_distribution + +def test_large_number_of_trials() -> None: + assert binomial_distribution(85, 171, 0.5) == pytest.approx( + 0.060749764626165485 + ) From fc834c5e32db6a46eb81b688ed583bbc9f432e06 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 28 Oct 2026 13:10:18 +0000 Subject: [PATCH 2/3] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- maths/binomial_distribution.py | 3 ++- maths/test_binomial_distribution.py | 6 ++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/maths/binomial_distribution.py b/maths/binomial_distribution.py index 6b069461394e..54958c614312 100644 --- a/maths/binomial_distribution.py +++ b/maths/binomial_distribution.py @@ -1,7 +1,8 @@ """For more information about the Binomial Distribution - https://en.wikipedia.org/wiki/Binomial_distribution""" -from math import comb +from math import comb + def binomial_distribution(successes: int, trials: int, prob: float) -> float: """ diff --git a/maths/test_binomial_distribution.py b/maths/test_binomial_distribution.py index 4330c4286fce..435c719d4bd0 100644 --- a/maths/test_binomial_distribution.py +++ b/maths/test_binomial_distribution.py @@ -1,8 +1,6 @@ - import pytest from maths.binomial_distribution import binomial_distribution + def test_large_number_of_trials() -> None: - assert binomial_distribution(85, 171, 0.5) == pytest.approx( - 0.060749764626165485 - ) + assert binomial_distribution(85, 171, 0.5) == pytest.approx(0.060749764626165485) From 713f06021f83819164405b35bbc9800fcf97b370 Mon Sep 17 00:00:00 2001 From: harshkanhat Date: Wed, 28 Oct 2026 18:45:17 +0530 Subject: [PATCH 3/3] Fix import formatting in binomial distribution test --- maths/test_binomial_distribution.py | 1 + 1 file changed, 1 insertion(+) diff --git a/maths/test_binomial_distribution.py b/maths/test_binomial_distribution.py index 435c719d4bd0..15ed043d731f 100644 --- a/maths/test_binomial_distribution.py +++ b/maths/test_binomial_distribution.py @@ -1,4 +1,5 @@ import pytest + from maths.binomial_distribution import binomial_distribution