Class ProbabilityDistributions::GaussianDistribution
In: lib/probability_distributions/gaussian_distribution.rb
Parent: ProbabilityDistribution

Methods

Public Class methods

[Source]

# File lib/probability_distributions/gaussian_distribution.rb, line 10
    def initialize ( average, variability, uniform_distribution=nil )
      raise unless uniform_distribution.is_a? UniformDistribution
      @uniform_distribution = uniform_distribution
    end

Public Instance methods

[Source]

# File lib/probability_distributions/gaussian_distribution.rb, line 15
    def box_muller_conversion
      yA, yB = sqrt(-2 * log(@x1)), 2 * PI * @x2
      @y1 = yA * cos(yB)
      @y2 = yA * sin(yB)
    end

[Source]

# File lib/probability_distributions/gaussian_distribution.rb, line 21
    def choose
      if @y2.nil?
        @x1, @x2 = @uniform_distribution.choose, @uniform_distribution.choose
        box_muller_conversion
        return @y1
      end
      res = @y2
      @y2 = nil
      return res
    end

[Validate]