Class: Binomial::Calculator
- Inherits:
-
Object
- Object
- Binomial::Calculator
- Defined in:
- lib/binomial/calculator.rb
Overview
Params:
- trials: Total number of trials conducted
- probability: The probability of one success
- target: The desired amount of successes
Direct Known Subclasses
Instance Attribute Summary collapse
-
#probability ⇒ Object
Returns the value of attribute probability.
-
#target ⇒ Object
Returns the value of attribute target.
-
#trials ⇒ Object
Returns the value of attribute trials.
Instance Method Summary collapse
-
#calculate ⇒ Object
Calculates the result.
-
#check_positive(inst_var) ⇒ Object
param: name of instance variable WITH leading @.
-
#equation ⇒ Object
A representation of the equation performed.
-
#initialize(params = {}) ⇒ Calculator
constructor
A new instance of Calculator.
- #model ⇒ Object
Constructor Details
#initialize(params = {}) ⇒ Calculator
Returns a new instance of Calculator.
10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/binomial/calculator.rb', line 10 def initialize(params = {}) @trials = params[:trials] @probability = params[:probability] @target = params[:target] check_positive(:@trials) check_positive(:@target) check_positive(:@probability) @probability <= 1 or raise "Error: probability[#{@probability}] must be <= 1" @trials >= @target or raise "Error: target[#{@target}] must be < trials[#{@trials}]" end |
Instance Attribute Details
#probability ⇒ Object
Returns the value of attribute probability.
8 9 10 |
# File 'lib/binomial/calculator.rb', line 8 def probability @probability end |
#target ⇒ Object
Returns the value of attribute target.
8 9 10 |
# File 'lib/binomial/calculator.rb', line 8 def target @target end |
#trials ⇒ Object
Returns the value of attribute trials.
8 9 10 |
# File 'lib/binomial/calculator.rb', line 8 def trials @trials end |
Instance Method Details
#calculate ⇒ Object
Calculates the result
41 42 43 44 45 |
# File 'lib/binomial/calculator.rb', line 41 def calculate @trials.choose(@target) * (@probability ** @target) * ((1 - @probability) ** (@trials - @target)) end |
#check_positive(inst_var) ⇒ Object
param: name of instance variable WITH leading @
24 25 26 27 28 29 |
# File 'lib/binomial/calculator.rb', line 24 def check_positive(inst_var) value = instance_variable_get(inst_var) var_name = inst_var.to_s.delete('@') value > 0 or raise "Error: '#{var_name}' must be > 0, but was: #{value}" end |
#equation ⇒ Object
A representation of the equation performed
36 37 38 |
# File 'lib/binomial/calculator.rb', line 36 def equation "P(X=#{@target}) = #{@trials}C#{@target} * #{@probability}^#{@target} * #{1 - @probability}^#{@trials - @target} = #{calculate}" end |
#model ⇒ Object
31 32 33 |
# File 'lib/binomial/calculator.rb', line 31 def model "X~B(#{@trials}, #{@probability})" end |