# Module: Distribution::Poisson::Ruby_

Defined in:
lib/distribution/poisson/ruby.rb

## Class Method Details

### .cdf(k, l) ⇒ Object

 34 35 36 # File 'lib/distribution/poisson/ruby.rb', line 34 def cdf(k, l) Math.exp(-l) * (0..k).inject(0) { |ac, i| ac + (l**i).quo(Math.factorial(i)) } end

### .pdf(k, l) ⇒ Object

 30 31 32 # File 'lib/distribution/poisson/ruby.rb', line 30 def pdf(k, l) (l**k * Math.exp(-l)).quo(Math.factorial(k)) end

### .quantile(prob, l) ⇒ ObjectAlso known as: p_value

 38 39 40 41 42 43 44 # File 'lib/distribution/poisson/ruby.rb', line 38 def quantile(prob, l) ac = 0 (0..100).each do |i| ac += pdf(i, l) return i if prob <= ac end end

### .rng(lambda_val = 1, seed = nil) ⇒ Object

Return a Proc object which returns a random number drawn from the poisson distribution with lambda.

== Arguments

• +lambda_val+ - mean of the poisson distribution
• +seed+ - seed, an integer value to set the initial state

== Algorithm

• Donald Knuth
 16 17 18 19 20 21 22 23 24 25 26 27 28 # File 'lib/distribution/poisson/ruby.rb', line 16 def rng(lambda_val = 1, seed = nil) seed = Random.new_seed if seed.nil? r = Random.new(seed).rand x = 0 l = Math.exp(-lambda_val) s = l while r > s x += 1 l *= lambda_val / x.to_f s += l end x end