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