diff --git a/lab5/binom.cpp b/lab5/binom.cpp index 7aa4ce4..b91cf8e 100644 --- a/lab5/binom.cpp +++ b/lab5/binom.cpp @@ -16,6 +16,11 @@ int main() { } + std::cout << "Q3 dbinom" << std::endl; + for (int i = 0; i < 11; i++) { + std::cout << b.dbinom(i) << std::endl; + } + return 0; } diff --git a/lab5/binom.hpp b/lab5/binom.hpp index af682e4..f91de34 100644 --- a/lab5/binom.hpp +++ b/lab5/binom.hpp @@ -10,32 +10,41 @@ class Binom { double p; public: - Binom(int n, double p) : n(n), p(p) {}; - int factorial(int n) const; + // Binom(int n_, double p_) : n(n_), p(p_) {}; + Binom(int n_, double p_) { + n = n_; + p = p_; + }; + int factorial(int k) const; double choose(int a, int b) const; double dbinom(int k) const; void print(int k) const; }; -inline int Binom::factorial(int n) const { +inline int Binom::factorial(int k) const { - if (n <= 1) + if (k <= 1) return 1; - return this->factorial(n - 1) * n; + return this->factorial(k - 1) * k; } inline double Binom::choose(int a, int b) const { - // double a_dbl = (double) a; - // double b_dbl = static_cast(b); - - return this->factorial(a)/( - factorial(a - b) * factorial(b) + return static_cast(this->factorial(a))/( + static_cast(factorial(a - b)) * + static_cast(factorial(b)) ); } +inline double Binom::dbinom(int k) const { + + return choose(n, k) * + std::pow(p, k) * std::pow(1 - p, n - k); + +} + #endif