Class: Croupier::Distributions::Binomial

Inherits:
Croupier::Distribution show all
Defined in:
lib/croupier/distributions/binomial.rb

Overview

Binomial Distribution Discrete probability distribution of the number of successes in a sequence of Bernoulli trials each of which yields success with probability p

Instance Attribute Summary

Attributes inherited from Croupier::Distribution

#description, #name, #parameters

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Croupier::Distribution

#configure, #generate_sample, #params

Constructor Details

#initialize(options = {}) ⇒ Binomial

Returns a new instance of Binomial.



11
12
13
14
15
16
# File 'lib/croupier/distributions/binomial.rb', line 11

def initialize(options={})
  @name = "Binomial distribution"
  @description = "Discrete probability distribution of the number of successes in a sequence of Bernoulli trials."
  configure(options)
  raise Croupier::InputParamsError, "Probability of success must be in the interval [0,1]" if params[:success] > 1 || params[:success] < 0
end

Class Method Details

.cli_nameObject



33
34
35
# File 'lib/croupier/distributions/binomial.rb', line 33

def self.cli_name
  "binomial"
end

.cli_optionsObject



37
38
39
40
41
42
43
44
# File 'lib/croupier/distributions/binomial.rb', line 37

def self.cli_options
  {:options => [
     [:size, 'number of trials', {:type => :integer, :default => 1}],
     [:success, 'success probability of each trial', {:type=>:float, :short => "-p", :default => 0.5}]
   ],
   :banner => "Binomial distribution. Discrete probability distribution of the number of successes in a sequence of Bernoulli trials."
  }
end

Instance Method Details

#default_parametersObject



29
30
31
# File 'lib/croupier/distributions/binomial.rb', line 29

def default_parameters
  {:success => 0.5, :size => 1}
end

#generate_numberObject



18
19
20
21
22
23
24
25
26
27
# File 'lib/croupier/distributions/binomial.rb', line 18

def generate_number
  x = -1
  s = 0
  loop do
    s += base_geometric.generate_number
    x += 1
    break if s > params[:size]
  end
  x
end