Class: Croupier::Distributions::Exponential
Overview
Exponential Distribution Continuous probability distribution with a lambda param rate describing the time between events in a Poisson process
Instance Attribute Summary
#description, #name, #parameters
Class Method Summary
collapse
Instance Method Summary
collapse
#configure, #generate_sample
Constructor Details
#initialize(options = {}) ⇒ Exponential
Returns a new instance of Exponential.
11
12
13
14
15
|
# 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)
end
|
Class Method Details
.cli_name ⇒ Object
26
27
28
|
# File 'lib/croupier/distributions/exponential.rb', line 26
def self.cli_name
"exponential"
end
|
.cli_options ⇒ Object
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_parameters ⇒ Object
22
23
24
|
# File 'lib/croupier/distributions/exponential.rb', line 22
def default_parameters
{:lambda => 1.0}
end
|
#generate_number ⇒ Object
17
18
19
20
|
# File 'lib/croupier/distributions/exponential.rb', line 17
def generate_number
raise Croupier::InputParamsError, "Invalid interval values" if @parameters[:lambda] <= 0
(-1/@parameters[:lambda]) * Math.log(rand)
end
|