module Math
Public Class Methods
binomial_distribution(*unamed, tries: nil, success: nil, probability: nil)
click to toggle source
@note if no named parameters are used, then it will try to use the unamed parameters (tries, success, probability)
# File lib/binomial_distribution.rb, line 16 def self.binomial_distribution(*unamed, tries: nil, success: nil, probability: nil) unamed.reverse! # pop works on a stack Binomial.new(tries: tries || unamed.pop, probability: probability || unamed.pop).distribute(success || unamed.pop) end
coef_binomial(n, k)
click to toggle source
# File lib/binomial_distribution.rb, line 10 def self.coef_binomial(n, k) return 0 if n < 0 or k < 0 or n < k return factorial(n) / (factorial(k) * factorial(n - k)) end
factorial(n)
click to toggle source
# File lib/binomial_distribution.rb, line 3 def self.factorial(n) raise ArgumentError, 'The argument muse be a natural Fixnum N' if not n.is_a? Fixnum raise Math::DomainError, 'The argument must be a natural (out of domain -- factorial)' if n < 0 return 1 if n.zero? return (1..n).inject(:*) end