Class: Croupier::Distributions::Exponential

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

Overview

Exponential Distribution Continuous probability distribution with a lambda param rate describing the time between events in a Poisson process

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_number, #generate_sample, #params, #to_enum

Constructor Details

#initialize(options = {}) ⇒ Exponential

Returns a new instance of Exponential.



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

def initialize(options={})
  @name = "Exponential distribution"
  @description = "Continuous probability distribution with a lambda param rate describing the time between events in a Poisson process"
  configure(options)
  raise Croupier::InputParamsError, "Invalid interval values" if params[:lambda] <= 0
end

Class Method Details

.cli_nameObject



26
27
28
# File 'lib/croupier/distributions/exponential.rb', line 26

def self.cli_name
  "exponential"
end

.cli_optionsObject



30
31
32
33
34
35
36
# File 'lib/croupier/distributions/exponential.rb', line 30

def self.cli_options
  {:options => [
     [:lambda, 'rate param', {:type=>:float, :default => 1.0}]
   ],
   :banner => "Exponential distribution. Generate numbers following a exponential distribution for a given lambda rate"
  }
end

Instance Method Details

#default_parametersObject



22
23
24
# File 'lib/croupier/distributions/exponential.rb', line 22

def default_parameters
  {:lambda => 1.0}
end

#inv_cdf(n) ⇒ Object



18
19
20
# File 'lib/croupier/distributions/exponential.rb', line 18

def inv_cdf n
  (-1/params[:lambda]) * Math.log(n)
end